Controlla se una stringa corrisponde a un’espressione regolare in JS

Voglio usare JavaScript (può essere con jQuery) per fare qualche validazione lato client per verificare se una stringa corrisponde alla regex:

^([a-z0-9]{5,})$ 

Idealmente sarebbe un’espressione restituita vera o falsa.

Sono un principiante di JavaScript, fa match() fa quello che mi serve? Sembra controllare se una parte di una stringa corrisponde a un’espressione regolare, non l’intera cosa.

Usa regex.test() se tutto ciò che vuoi è un risultato booleano:

 /^([a-z0-9]{5,})$/.test('abc1'); // false /^([a-z0-9]{5,})$/.test('abc12'); // true /^([a-z0-9]{5,})$/.test('abc123'); // true 

… e puoi rimuovere il () dal tuo regexp poiché non hai bisogno di una cattura.

Usa il metodo test() :

 var term = "sample1"; var re = new RegExp("^([a-z0-9]{5,})$"); if (re.test(term)) { console.log("Valid"); } else { console.log("Invalid"); } 

Puoi anche usare match() :

 if (str.match(/^([a-z0-9]{5,})$/)) { alert("match!"); } 

Ma test() sembra essere più veloce come puoi leggere qui .

Importante differenza tra match() e test() :

match() funziona solo con le stringhe, ma test() funziona anche con numeri interi.

 12345.match(/^([a-z0-9]{5,})$/); // ERROR /^([a-z0-9]{5,})$/.test(12345); // true /^([a-z0-9]{5,})$/.test(null); // false // Better watch out for undefined values /^([a-z0-9]{5,})$/.test(undefined); // true 

Usa /youregexp/.test(yourString) se vuoi solo sapere se la tua stringa corrisponde alla /youregexp/.test(yourString) .

Ecco un esempio che cerca determinati tag HTML, quindi è chiaro che /someregex/.test() restituisce un valore booleano:

 if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true'); 
  let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; let regexp = /[ad]/gi; console.log(str.match(regexp));