Una expresión regular es una técnica que nos permite identificar si
un string coincide con un patrón determinado. Un ejemplo clásico es
determinar si un email está correctamente tipeado (sabemos que comienza
con uno o más caracteres alfanuméricos, luego el carácter @ seguido de
uno o más caracteres alfanuméricos, luego el carácter '.' y finalmente
otros caracteres alfabéticos)
Sin conocer las expresiones regulares se pueden resolver estos tipos
de problemas mediante una serie de if que procesan partes del string
para comprobar si cumplen en conjunto todas las reglas que necesitamos
validar, pero con las expresiones regulares podemos resolver este tipo
de problemas con una sintaxis mucho más compacta.
Existe toda una serie de reglas para crear las expresiones regulares que iremos viendo.
El lenguaje JavaScript administra las expresiones regulares mediante el objeto RegExp:
Problema
Validar si se ingresa un valor entero con exactamente tres dígitos.
<html> <head> </head> <body> <script type="text/javascript"> var valor=prompt('Ingrese un numero entero positivo de 3 dígitos',''); var patron=new RegExp('^[0-9]{3}$'); if (patron.test(valor)) alert('Se ingresó un valor entero positivo de 3 dígitos'); else alert('No se ingresó un valor entero positivo de 3 dígitos'); </script> </body> </html>
En este primer paso no nos importa la sintaxis dispuesta en el string
que le pasamos al constructor del objeto RegExp, sino ver la sintaxis
de JavaScript para crear un objeto de RegExp y seguidamente como
llamamos al método test que retorna si el string 'valor' contrastado con
la expresión regular definida en el objeto 'patron' verifica verdadero o
falso:
var patron=new RegExp('^[0-9]{3}$'); if (patron.test(valor)) alert('Se ingresó un valor entero positivo de 3 dígitos'); else alert('No se ingresó un valor entero positivo de 3 dígitos');
Veremos luego que para definir expresiones regulares intervienen una
serie de caracteres ^ $. * +? =! : | \ / () [] {} que tienen un
significado especial en la definición del lenguaje de expresiones
regulares, estos tipos de caracteres suelen llamarse metacaracteres.
El mismo problema se puede expresar utilizando una sintaxis distinta
para la creación de la expresión regular (esta otra sintaxis es muy
utilizada, pero en el fondo el interprete de JavaScript crea un objeto
de tipo RegExp):
<html> <head> </head> <body> <script type="text/javascript"> var valor=prompt('Ingrese un numero entero positivo de 3 dígitos',''); var patron=/^[0-9]{3}$/; if (patron.test(valor)) alert('Se ingresó un valor entero positivo de 3 dígitos'); else alert('No se ingresó un valor entero positivo de 3 dígitos'); </script> </body> </html>
Como podemos ver al definir la variable patron le asignamos una
cadena encerrada entre los caracteres '/' (recordar que estamos creando
un objeto de tipo RegExp):
var patron=/^[0-9]{3}$/;Problema
Ingresar una oración por teclado y luego imprimir un mensaje si la oración ingresada contiene la palabra 'hora'
<html> <head> </head> <body> <script type="text/javascript"> var oracion=prompt('Ingrese una oración',''); var patron=/hora/; if (patron.test(oracion)) alert('La oración ingresada contiene la palabra \'hora\''); else alert('La oración ingresada no contiene la palabra \'hora\''); </script> </body> </html>
Es muy posible que este primer problema convenga utilizar el método
indexOf del objeto string pero para introducir el concepto de
expresiones regulares es lo más sencillo. Estamos declarando la
expresión regular:
var patron=/hora/;
Con esta definición especificamos que el patrón a comparar son los
caracteres 'hora'. Luego al llamar al método test donde le pasamos el
string a comparar verifica si el patrón 'hora' está contenido en alguna
posición del string 'oración'.
El método test se verifica verdadero si ingresamos las siguientes oraciones:
Es hora de partir. hora de comer. Pasó muchas horas corriendo. Ahora tenemos ganas de correr.
Se verifica falso si ingresamos la siguiente oración:
El niño ora. Hora de comer.
No hay comentarios.:
Publicar un comentario