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.

problema

Ingresar 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.

problema

Ingresar 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.

problema

Ingresar 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 soleada
problema

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>

Retornar