Expresiones regulares: [] conjunto de caracteres opcionales |
Ahora veremos el significado de los caracteres [] en una expresión regular. Se emplea estos caracteres para encerrar los caracteres permitidos.
problema
Controlar si la palabra ingresada comienza con el primer carácter alfabético ya sea en mayúsculas o en minúsculas:
<html> <head> </head> <body> <script type="text/javascript"> var palabra=prompt('Ingrese una palabra',''); var patron=/^[a-zA-Z]/; if (patron.test(palabra)) alert('La palabra comienza con un carácter alfabético (mayúscula o minúscula)'); else alert('La palabra no comienza con un carácter alfabético (mayúscula o minúscula)'); </script> </body> </html>
Debemos especificar cada uno de los caracteres permitidos encerrados entre los corchetes. Cuando los caracteres son seguidos en la tabla de caracteres podemos utilizar el carácter '-' para indicar un rango de caracteres:
var patron=/^[a-zA-Z]/;
Como solo debemos verificar el primer carácter utilizamos el comando '^' y le sigue los caracteres posibles.
problemaIngresar una palabra y luego mostrar un mensaje si finaliza con vocal.
<html> <head> </head> <body> <script type="text/javascript"> var palabra=prompt('Ingrese una palabra',''); var patron=/[aeiouAEIOUáéíóú]$/; if (patron.test(palabra)) alert('La palabra finaliza con vocal'); else alert('La palabra no finaliza con vocal'); </script> </body> </html>
En la expresión regular debemos especificar entre corchetes todas las vocales y como no están en forma seguida en la tabla de caracteres debemos especificarlas una por una:
var patron=/[aeiouAEIOUáéíóú]$/;
Como debemos controlar el último carácter de la oración utilizamos el comando $
Hemos utilizado el carácter '^' para encontrar coincidencias desde el principio del string, pero este carácter dentro de los corchetes abiertos y cerrados tiene otro uso. Permite obtener todos los otros caracteres distintos a los especificados.
problemaIngresar una clave que no finalice en vocal.
<html> <head> </head> <body> <script type="text/javascript"> var palabra=prompt('Ingrese una palabra',''); var patron=/[^aeiouAEIOUáéíóú]$/; if (patron.test(palabra)) alert('La palabra no finaliza con vocal'); else alert('La palabra finaliza con vocal'); </script> </body> </html>problema
Ingresar una palabra y luego mostrar un mensaje si contiene una vocal en alguna parte de la palabra.
<html> <head> </head> <body> <script type="text/javascript"> var palabra=prompt('Ingrese una palabra',''); var patron=/[aeiouAEIOUáéíóú]/; if (patron.test(palabra)) alert('La palabra tiene al menos una vocal'); else alert('La palabra no tiene vocales'); </script> </body> </html>
Ahora nuestra expresión regular queda especificada como:
var patron=/[aeiouAEIOUáéíóú]/;
El método test retorna true si ingresamos alguna de las siguientes palabras:
casa madre salir
En cambio retorna false si ingresamos:
pbt
Cuando tenemos que buscar en el string alguno de los caracteres que tienen un significado especial en las expresiones regulares '^ $. * +? =! : | \ / () [] {} ' debemos escaparlos a algunos dentro de los corchetes.
problemaIngresar una oración por teclado y luego mostrar un mensaje si el string ingresado contiene al menos uno de los caracteres que son un comando o metacaracter para las expresiones regulares:
<html> <head> </head> <body> <script type="text/javascript"> var oracion=prompt('Ingrese una oracion',''); var patron=/[\^$.*+?=!:|\\/()\[\]{}]/; if (patron.test(oracion)) alert('La oración tiene al menos un carácter ^ $. * +? =! : | \ / () [] {}'); else alert('La oración no tiene ningún carácter ^ $. * +? =! : | \ / () [] {}'); </script> </body> </html>
Se verifica verdadero el método test si ingresamos:
La tarde estaba soleada!
Se verifica falso el método test si ingresamos:
La tarde estaba soleadaproblema
Ingresar todos los caracteres con significada especial en las expresiones regulares en el siguiente orden: ^$.*+?=!:|\/()[]{} (es necesario escapar todos los metacaracteres):
<html> <head> </head> <body> <script type="text/javascript"> var cadena=prompt('Ingrese esos caracteres especiales para expresiones regulares en este mismo orden: ^$.*+?=!:|\/()[]{} ',''); var patron=/^\^\$\.\*\+\?\=\!\:\|\\\/\(\)\[\]\{\}$/; if (patron.test(cadena)) alert('Orden correcto'); else alert('Incorrecto'); </script> </body> </html>