Sto imparando espressioni regolari in Javascript e c'è una cosa che non capisco.
Il seguente regexp dovrebbe corrispondere a qualsiasi stringa dalla a alla z, ma se aggiungo un numero, si dice che è corretto
var patron = /[a-zA-Z]/;
var regex = new RegExp(patron);
var v= "hello word 512";
if(v.match(regex))
{
//should not match but it does
}else
{
objInput.style.color = "red";
}
E loro ho provato questo:
var patron = /[a-zA-ZD]/;
var regex = new RegExp(patron);
var v= "hello word 512";
if(v.match(regex))
{
//should not match but still dont work
}else
{
objInput.style.color = "red";
}
E inoltre, le parentesi non stanno corrispondendo
var patron = /[a-zA-Z""]/;
var regex = new RegExp(patron);
var v= "hello word 512";
if(v.match(regex))
{
//it match whenever the double quoute it followed by the single quoute"
}else
{
objInput.style.color = "red";
}
risposte:
3 per risposta № 1Circa il primo esempio che hai fornito, la tua espressione regolare /[a-zA-Z]/
controlla qualsiasi carattere nella stringa di input. Dal momento che trova h
nella stringa di input, restituisce true. Quello che devi fare è posizionare le ancore di inizio e fine, ^
e $
nella tua espressione regolare. La nuova regex dovrebbe essere simile a questa:
/^[a-zA-Z]+$/
È possibile apportare modifiche a tutti i regex di conseguenza.
Per abbinare le parentesi, è necessario sfuggire a esse con un backslash. (
corrisponderebbe (
, e )
corrisponderebbe )
.
2 per risposta № 2
Dovresti abbinare il intera stringa, usando il ^ (corrisponde all'inizio della stringa) e $ (corrisponde alla fine della stringa) operatori, ad esempio:
/^[a-zA-Zs]+$/.test("any string followed by numbers! 555") // will return false
Questo non permetterà nient'altro che a-z
caratteri e spazi nella stringa.
0 per risposta № 3
la funzione di partita cerca almeno una partita nel tuo caso questo è il 1 ° simbolo che è un carattere. se vuoi SOLO caratteri allora usa /[a-zA-Z]/.test("tua stringa ")