8

Expresiones regulares en JavaScript

18Mar
en Desarrollo web, Javascript, Tutoriales, Web

Después de una semana bastante cargada de deporte y trabajo quiero escribir este artículo para los estudiantes de 3er año de la UCI que cursan Programación Web. Aprovechando que soy alumno ayudante de esta asignatura, me valdré del sitio para dejarles documentación y explicar algunos elementos importantes para el desarrollo web.

Hoy vamos a ver que son las expresiones regulares en JavaScript y cómo nos pueden servir para hacer las validaciones de forma muy sencilla.

Una expresión regular es un patrón que permite buscar coincidencias con combinaciones de caracteres dentro de cadenas de texto. La forma más sencilla de crear una expresión regular es asignándole el valor de la expresión a una variable (se utilizan las barras para delimitar la expresión regular).


exp = /^[0-9]+/;

La variable se convierte en una variable del tipo expresión regular, por tanto, puede usarse con ella el método test para validar la cadena.


if(exp.test("123")==false)

¿Cómo se crea un patrón?

Una expresión regular es una combinación de caracteres normales con caracteres especiales. Veamos un ejemplo con caracteres normales:


alert(/ejemplo/.test("Esto es un ejemplo"));

Si ejecutamos este código devolvería true, porque la expresión /ejemplo/ encontró la subcadena «ejemplo» dentro de la cadena «Esto es un ejemplo».

Con la utilización de caracteres especiales se consigue encontrar coincidencias con los retornos de carro, los tabuladores, el inicio o el final de las palabras, las repeticiones de caracteres.

La siguiente tabla muestra una lista de los caracteres especiales más importantes, así como su significado y un ejemplo de aplicación:

Carácter

Significado

Ejemplo

\

Indica que el siguiente carácter normal debe ser considerado como especial. También se utiliza como carácter de escape para los caracteres especiales.

 

/\n/ encuentra un salto de línea. Si se desea buscar el carácter ‘\’; habrá que utilizar /\\/

^

Se utiliza para encontrar el comienzo de una línea. /a/ encuentra una ‘a’ en cualquier lugar; pero /^a/ haya una coincidencia con el carácter ‘a’ si se encuentra al comienzo de una línea.

 

$

Se utiliza para encontrar el final de una línea.

 

*

Encuentra coincidencia del carácter que le precede cuando aparece 0 o más veces en la cadena.

 

/hola*/ encuentra coincidencias en las cadena «hol»; «hola» y «holaaaa».

+

Igual que el ‘*’; pero cuando el carácter aparece 1 o más veces.

 

?

Igual que el ‘*’; pero cuando el carácter aparece 0 o 1 vez.

 

.

Se utiliza para encontrar cualquier carácter que no sea un carácter de nueva línea.

 

/.sa/ encontrará coincidencias en las cadenas «casa»; «cosa» y «cesa»; pero no en «asa».

Encuentra coincidencias con ‘x’; y recuerda el patrón para su posterior utilización.

 

x|y

Encuentra coincidencia si aparece el carácter ‘x’ o el carácter ‘y’.

 

{n}

Encuentra coincidencia si hay exactamente n apariciones del carácter que precede.

 

Por ejemplo; /a{3}/ encuentra coincidencia en «holaaa»; pero no en «holaa».

{n;}

Encuentra coincidencia si hay al menos n apariciones del carácter que precede.

 

{n;m}

Encuentra coincidencia si hay como mínimo n y como máximo m apariciones del carácter que precede.

 

[xyz]

Representa un conjunto de caracteres individuales. /[aeiou]/ encuentra coincidencias con cualquier vocal. Si se utiliza el carácter ‘-‘ se pueden definir rangos. Por ejemplo; /[0-3]/ encuentra coincidencias si aparecen en la cadena los caracteres ‘0’; ‘1’; ‘2’ o ‘3’.

 

[^xyz]

Representa un conjunto de caracteres individuales complementario. Encuentra coincidencias con aquellos caracteres que NO aparezcan en el conjunto. Al igual que en el caso anterior; con el ‘-‘ se pueden definir rangos.

 

[\b]

Encuentra coincidencia con el carácter de retroceso.

 

\b

Encuentra coincidencias con los límites de las palabras Por ejemplo; /\bola/ encuentra la cadena «ola» en «Viene una ola»; pero no en «Viene una cola».

Para terminar les dejo algunas expresiones regulares muy utilizadas:

Correo electrónico: /^(.+\@.+\..+)$/

Número de teléfono: /^\d{9}$/

Fecha con formato DD/MM/AAAA: /^\d{2}\/\d{2}\/\d{4}$/

Código postal: /^\d{5}$/

Número entero: /^(\+|\-)?\d+$/

Número real: /^[+-]?\d+([,.]\d+)?$/

CI: /^\d{11}$/

8 Comentarios

  1. Muy bueno el post…a veces son cosas que uno tiene que estar buscandolas en internet cada vez que las tiene que utilizar

  2. Ricardo dice:

    Muchas gracias por este

  3. Rene dice:

    el del correo no me pincho, utilice este:
    /^[a-z][a-z|0-9]*\@[a-z](\.[a-z])+$/

  4. Lian dice:

    Esto ha sido de mucha utilidad, muchas gracias

  5. Rene dice:

    este si
    /^[a-z][a-z|0-9]*\@[a-z](\.[a-z]+)+$/

  6. Silvio dice:

    quiero hacer una expreci’on regular del solapin que permita escribir como primera letra E o T o P y despues 6 numeros

    • principiante dice:

      Segun lo que lei seria algo como esto:
      /^(E|T|P)[0-9][0-9][0-9][0-9][0-9][0-9]/
      y utilizando el {n} queda mejor
      /^(E|T|P)[0-9]{6}/
      lo probé poco, asi que pruebalo, pero creo que está bien.

  7. my_name dice:

    necesito una expresion regular para detectar los espacios

Dejar un comentario

¿Eres humano? Entonces resuelve esta operación: * Límite de tiempo se agote. Por favor, recargar el CAPTCHA por favor.