Risposte:
/^[a-z0-9]+$/i
^ Start of string
[a-z0-9] a or b or c or ... z or 0 or 1 or ... 9
+ one or more times (change to * to allow empty string)
$ end of string
/i case-insensitive
Aggiornamento (supporto di caratteri universali)
se hai bisogno di questo regexp supporta il carattere universale puoi trovare un elenco di caratteri Unicode qui.
per esempio: /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/
questo supporterà il persiano.
[^\W_]
ma [a-z0-9]
/ i è un modo ovvio.
Se si desidera restituire un risultato sostituito, funzionerebbe:
var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);
Ciò restituirebbe:
Test123TEST
Nota che il gi è necessario perché significa globale (non solo sulla prima corrispondenza) e senza distinzione tra maiuscole e minuscole, motivo per cui ho az invece di a-zA-Z. E il ^ all'interno delle parentesi significa "tutto ciò che non è tra queste parentesi".
ATTENZIONE: Alfanumerico è ottimo se è esattamente quello che vuoi. Ma se lo stai utilizzando in un mercato internazionale come il nome o l'area geografica di una persona, devi tenere conto dei caratteri unicode, cosa che non funzionerà. Ad esempio, se hai un nome come "Âlvarö", lo renderebbe "lvar".
Usa la classe di caratteri della parola. Quanto segue equivale a ^[a-zA-Z0-9_]+$
:
^\w+$
Spiegazione:
Utilizzare /[^\w]|_/g
se non si desidera abbinare il carattere di sottolineatura.
/^([a-zA-Z0-9 _-]+)$/
la regex di cui sopra consente gli spazi a lato di una stringa e limita i caratteri speciali. Consente solo az, AZ, 0-9, spazio, trattino basso e trattino.
^\s*([0-9a-zA-Z]*)\s*$
oppure, se si desidera un minimo di un personaggio:
^\s*([0-9a-zA-Z]+)\s*$
Le parentesi quadre indicano un set di caratteri. ^ è l'inizio dell'input. $ è la fine dell'input (o newline, a seconda delle opzioni). \ s è uno spazio bianco.
Lo spazio bianco prima e dopo è facoltativo.
Le parentesi sono l'operatore di raggruppamento per consentire di estrarre le informazioni desiderate.
EDIT: rimosso il mio uso errato del set di caratteri \ w.
Invece di cercare una stringa alfanumerica valida, puoi ottenerla indirettamente controllando la presenza di caratteri non validi nella stringa. Fallo verificando tutto ciò che corrisponde al complemento della stringa alfanumerica valida.
/[^a-z\d]/i
Ecco un esempio:
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
Nota l'operatore logico non isValid
, poiché sto testando se la stringa è falsa, non se è valida.
Questo funzionerà
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
Accetta solo caratteri alfanumerici: solo
casi testati:
dGgs1s23 - valid
12fUgdf - valid,
121232 - invalid,
abchfe - invalid,
abd()* - invalid,
42232^5$ - invalid
o
Puoi anche provare questo. questa espressione ha soddisfatto almeno un numero e un carattere e nessun altro carattere speciale
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
in angolare può testare come:
$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);
Riferito: espressione regolare per alfanumerico in Angularjs
Estendi il prototipo di stringa da utilizzare in tutto il tuo progetto
String.prototype.alphaNumeric = function() {
return this.replace(/[^a-z0-9]/gi,'');
}
Uso:
"I don't know what to say?".alphaNumeric();
//Idontknowwhattosay
Sembra che molti utenti abbiano notato che queste espressioni regolari falliranno quasi sicuramente a meno che non lavoriamo strettamente in inglese. Ma penso che ci sia un modo semplice per andare avanti che non sarebbe così limitato.
Qualsiasi personaggio che corrisponda a quelle stringhe non è sicuramente di natura alfabetica.
let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
let bIsAlphabetic = (copy1[i] != copy2[i]);
}
Facoltativamente, puoi anche rilevare i numeri semplicemente cercando le cifre da 0 a 9.
Prova questo ... Sostituisci il tuo ID campo con #name ... az (dalla A alla Z), AZ (dalla A alla Z), 0-9 (da 0 a 9)
jQuery(document).ready(function($){
$('#name').keypress(function (e) {
var regex = new RegExp("^[a-zA-Z0-9\s]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
e.preventDefault();
return false;
});
});
JAVASCRIPT accetta solo NUMERI, ALFABETTI e PERSONAGGI SPECIALI
document.getElementById("onlynumbers").onkeypress = function (e) {
onlyNumbers(e.key, e)
};
document.getElementById("onlyalpha").onkeypress = function (e) {
onlyAlpha(e.key, e)
};
document.getElementById("speclchar").onkeypress = function (e) {
speclChar(e.key, e)
};
function onlyNumbers(key, e) {
var letters = /^[0-9]/g; //g means global
if (!(key).match(letters)) e.preventDefault();
}
function onlyAlpha(key, e) {
var letters = /^[a-z]/gi; //i means ignorecase
if (!(key).match(letters)) e.preventDefault();
}
function speclChar(key, e) {
var letters = /^[0-9a-z]/gi;
if ((key).match(letters)) e.preventDefault();
}
<html>
<head></head>
<body>
Enter Only Numbers:
<input id="onlynumbers" type="text">
<br><br>
Enter Only Alphabets:
<input id="onlyalpha" type="text" >
<br><br>
Enter other than Alphabets and numbers like special characters:
<input id="speclchar" type="text" >
</body>
</html>
Ho una stringa simile a Samsung Galaxy A10s 6.2-Inch (2GB, 32GB ROM) Android 9.0, (13MP + 2MP) + 8MP Dual SIM 4000mAh 4G LTE Smartphone - Nero (BF19)
Di seguito è quello che ho fatto:
string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
Notate mi ha permesso ,._-
quindi utilizzare split()
e join()
per sostituire ,
a -
e lo spazio per-
, rispettivamente.
Ho finito per ottenere qualcosa del genere:
samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20
che è quello che volevo.
Potrebbe esserci una soluzione migliore, ma questo è ciò che ho trovato che funziona bene per me.
Salva questa costante
const letters = /^[a-zA-Z0-9]+$/
ora, per controllare la parte usa .match ()
const string = 'Hey there...' // get string from a keyup listner
let id = ''
// iterate through each letters
for (var i = 0; i < string.length; i++) {
if (string[i].match(letters) ) {
id += string[i]
} else {
// In case you want to replace with something else
id += '-'
}
}
return id
Jquery accetta solo NUMERI, ALFABETTI e PERSONAGGI SPECIALI
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
Enter Only Numbers:
<input type="text" id="onlynumbers">
<br><br>
Enter Only Alphabets:
<input type="text" id="onlyalpha">
<br><br>
Enter other than Alphabets and numbers like special characters:
<input type="text" id="speclchar">
<script>
$('#onlynumbers').keypress(function(e) {
var letters=/^[0-9]/g; //g means global
if(!(e.key).match(letters)) e.preventDefault();
});
$('#onlyalpha').keypress(function(e) {
var letters=/^[a-z]/gi; //i means ignorecase
if(!(e.key).match(letters)) e.preventDefault();
});
$('#speclchar').keypress(function(e) {
var letters=/^[0-9a-z]/gi;
if((e.key).match(letters)) e.preventDefault();
});
</script>
</body>
</html>
**JQUERY to accept only NUMBERS , ALPHABETS and SPECIAL CHARACTERS **
<!DOCTYPE html>
$('#onlynumbers').keypress(function(e) {
var letters=/^[0-9]/g; //g means global
if(!(e.key).match(letters)) e.preventDefault();
});
$('#onlyalpha').keypress(function(e) {
var letters=/^[a-z]/gi; //i means ignorecase
if(!(e.key).match(letters)) e.preventDefault();
});
$('#speclchar').keypress(function(e) {
var letters=/^[0-9a-z]/gi;
if((e.key).match(letters)) e.preventDefault();
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
Inserisci solo numeri:
inserisci solo alfabeti:
inserisci diversi alfabeti e numeri come caratteri speciali:
</body>
</html>