Expresiones regulares: cuantificadores o repeticiones {x} {x,y} {x,} |
Ahora veremos que podemos inicializar luego que indicamos entre corchetes el patrón a buscar la cantidad de veces que puede repetirse este patrón.
Son útiles para controlar la cantidad de repeticiones del patrón definido.
Se especifican luego del corchete donde definimos los caracteres permitidos:
Verificar si contiene entre 3 y 6 dígitos:
var patron=/[0-9]{3,6}/;
Verificar si contiene 3:
var patron=/[0-9]{3}/;
Verificar si contiene 3 o más dígitos:
var patron=/[0-9]{3,}/;Problema Ingresar una oración y mostrar si se ingresó un número que tiene al menos 2 dígitos.
<html> <head> </head> <body> <script type="text/javascript"> var oracion=prompt('Ingrese una palabra',''); var patron=/[0-9]{2,}/; if (patron.test(oracion)) alert('La oración tiene un número de al menos 2 dígitos'); else alert('La oración no tiene un número de al menos 2 dígitos'); </script> </body> </html>
La expresión regular se verifica verdadera si se ingresa:
Yo tengo 20 años. Yo tengo 101 años.
La expresión regular se verifica falsa si se ingresa:
Yo tengo 5 años.Problema Ingresar una patente de un auto de argentina y luego mostrar un mensaje si es correcto o no su valor. Toda patente está constituida por 3 números y tres letras en ese orden (ej. 345afg )
<html> <head> </head> <body> <script type="text/javascript"> var patente=prompt('Ingrese un nro de patente',''); var patron=/[0-9]{3}[a-z]{3}/; if (patron.test(patente)) alert('La patente ingresada es correcta'); else alert('La patente ingresada no es correcta'); </script> </body> </html>
A primera medida este patrón resolvería nuestro problema:
var patron=/[0-9]{3}[a-z]{3}/;
Se verifica verdadero si se ingresa:
123abc 934zaq
Se verifica falso si se ingresa:
123ab 12abc
Pero tenemos un problema ya que si ingresamos:
123abcd
SE VERIFICA VERDADERO.
Para resolver esto debemos modificar el patrón indicando que los últimos tres caracteres deben ser letras:
var patron=/[0-9]{3}[a-z]{3}$/;
Ahora si ingresamos 123abcd se verifica falso.
Pero todavía tenemos otro problema al ingresar:
1234abc
Y finalmente para que funcione correctamente debemos definir el patrón:
var patron=/^[0-9]{3}[a-z]{3}$/;
El algoritmo correcto es el siguiente:
<html> <head> </head> <body> <script type="text/javascript"> var patente=prompt('Ingrese un nro de patente',''); var patron=/^[0-9]{3}[a-z]{3}$/; if (patron.test(patente)) alert('La patente ingresada es correcta'); else alert('La patente ingresada no es correcta'); </script> </body> </html>Problema
Ingresar una oración y mostrar si se ingresó uno o más números con exactamente 5 dígitos.
Para resolver este problema debemos definir un patrón que identifique un número con exactamente cinco dígitos y que antes y después de este tenga un espacio en blanco. Para identificar el espacio en blanco debemos introducir en la expresión regular el carácter de escape y la letra s, es decir \s
El algoritmo luego es:
<html> <head> </head> <body> <script type="text/javascript"> var oracion=prompt('Ingrese una oracion',''); var patron=/\s[0-9]{5}\s/; if (patron.test(oracion)) alert('La oración tiene un número de 5 dígitos'); else alert('La oración no tiene un número de 5 dígitos'); </script> </body> </html>
Ahora vemos la expresión regular definida es:
var patron=/\s[0-9]{5}\s/;
Es decir que para que se valide verdadero el string debe contener un espacio en blanco, seguido de 5 dígitos y otro espacio en blanco.