/ / RexExp in javascript non corrisponde a un numero all'interno di una stringa - javascript, regex

RexExp in javascript non corrisponde a un numero all'interno di una stringa - javascript, regex

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 № 1

Circa 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 ")