2011-07-06 17 views
400

quiero usar JavaScript (puede ser con jQuery) para hacer algo de validación del lado del cliente para comprobar si una cadena coincide con la expresión regular:Comprobar si una cadena coincide con una expresión regular en JS

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

Lo ideal sería una expresión que devolvió verdadero o falso.

Soy un novato en JavaScript, ¿hace match() lo que necesito? Parece comprobar si parte de una cadena coincide con una expresión regular, no con todo.

+0

¿Desea que un partido completo, o simplemente si la cadena _contains_ una subcadena coincidente? –

+0

Una coincidencia completa, no una subcadena coincidente. – Richard

Respuesta

679

Uso regex.test() si lo que quieres es un resultado booleano:

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

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

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

... y se podía quitar la () de su expresión regular ya que usted no tiene ninguna necesidad de una captura.

+1

¿Qué significa la inicial^en la expresión regular allí? – PedroD

+2

@PedroD^implica comenzar o comienza con – Nagaraju

+0

Entonces, ¿cómo harías lo contrario? "no comienza con ..." – PedroD

28

Utilice /youregexp/.test(yourString) si solo quiere saber si su cadena coincide con la expresión regular.

6

Aquí hay un ejemplo que busca ciertas etiquetas HTML por lo que es claro que /someregex/.test() devuelve un valor lógico:

if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true'); 
43

Puede utilizar match() así:

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

Pero test() parece ser más rápido a medida puedes leer here.

diferencia importante entre match() y test():

match() sólo funciona con cadenas, sino también con obras test() enteros.

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 
87

Uso test() método:

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

Faltan comillas dobles de cierre en el argumento del constructor. –

+0

Se han agregado comillas dobles faltantes, gracias @RadkoDinev –

+2

Tenga en cuenta que la versión con 'RegExp' permite insertar valores variables en la cadena de expresiones regulares. –

Cuestiones relacionadas