Está en la página 1de 3

Expresiones Regulares en JavaScript

EXPRESIONES REGULARES EN JAVASCRIPT

Las expresiones regulares son una forma de describir cadenas de caracteres


que sirven para comparaciones y reemplazos complejos. Por ejemplo si escribimos
en la línea de comandos de windows dir *.exe, eso es una expresión regular que
define todas las cadenas de caracteres que empiecen con cualquier cosa seguida
de .exe, es decir, todos los archivos .exe. La acción de comparar la cadena de texto
con el patrón que le hemos dado (la expresión regular) se denomina
reconocimiento de patrones (pattern matching).

En JavaScript las expresiones regulares se basan en las de Perl, de forma que son
muy muy parecidas y se representan por el objeto RegExp (de REGular EXPresion).
Para crear una expresión regular podemos usar el constructor del objeto RegExp,
pero es más conveniente utilizar una sintaxis especialmente pensado para ello.
Veamos un ejemplo, el más simple posible.

var patron = /pato/;

Este es el patrón más sencillo. En una comparación con una cadena devolvería true
en el caso de la cadena con la que se compara sea "pato". Todos los patrones se
escriben entre barras invertidas, así como las cadenas de texto se escriben
entrecomilladas. La otra forma de crear el objeto RegExp es como decíamos
utilizando su constructor.

var patrón = new RegExp("pato");

Pero en este caso lo que le pasamos al constructor es una cadena, por lo tanto en
lugar de usar / lo entrecomillamos. Para complicar un poco más las cosas
supongamos que queremos comprobar si la cadena que nos pasan es pato, pata o
pate. Entonces usaríamos los corchetes, que indican opción, es decir, al comparar
con /[aeo]/ devolvería cierto en caso de que la cadena fuera la letra a, la e o la letra
o.

var patrón = /pat[aeo]/;

¿Y si quisiéramos comprobar si la cadena es pat0, pat1, pat2,…, pat9? En lugar de


tener que encierra los 10 dígitos dentro de los corchetes podemos utilizar el guión,
que sirve para indicar rangos. Por ejemplo 0-9 serían todos los números de 0 a 9
inclusive.

var patrón = /pat[0-9]/;

José Venustiano Ticante Herná ndez Programación Web


Expresiones Regulares en JavaScript

Si quisiéramos por ejemplo que el último carácter fuera o un dígito (0-9) o una
letra minúscula (a-z) simplemente se escribirían dentro de los corchetes un criterio
detras de otro.

//pat seguido de un número o letra minúscula


var patrón = /pat[0-9a-z]/;
//ahora también puede estar seguido de una A mayúscula
var patron2 = /pat[0-9a-zA]/;

¿Y qué ocurriría si en lugar de tener solo un número o una letra minúscula


quisiéramos que pudieran haber varias, pero siempre minúsculas o números?
Entonces recurrimos a +, *, ? y {}. + indica que lo que tiene a su izquierda puede
estar 1 o más veces, * indica que puede estar 0 o más veces (en el caso de + el
número o la minúscula tendría que aparecer al menos una vez, con * pat también
se aceptaría), ? indica opcionalidad, es decir, lo que tenemos a la izquierda puede o
no aparecer (puede aparecer 0 o 1 veces) y por último {} sirve para indicar
exactamente el número de veces o que puede aparecer o un rango. Por ejemplo {3}
indicaría que tiene que aparecer exactamente 3 veces, {3,8} indicaría que tiene que
aparecer de 3 a 8 veces y {3,} tres veces o más (las que sean). Hay que tener
cuidado porque {} exige que se repite lo último, cuando no se esté seguro de lo
que va a hacer usamos (). Para ilustrar esto vamos a ver un primer ejemplo real con
expresiones regulares:

<script>
var patrón = /pat[ao]{2}/;
document.write("patopata".search(patron));
document.write("patoa".search(patron));
patrón = /(pat[ao]){2}/;
document.write("patopata".search(patron));
document.write("patoa".search(patron));
</script>

La función search del tipo de objeto de String (asociado a las cadenas de caracteres)
comprueba si la cadena representada por el patrón que le pasamos como argumento se
encuentra dentro de la cadena sobre la que se llama a search. En el caso de que así sea
devuelve la posición (por ejemplo para la cadena pato con el patrón /p/ devolvería 0, 1 si
el patrón es a, 2 si es t,…) y -1 si no se encuentra. Otra función útil que merece la pena
comentar es cadena.replace(patrón, sustituto), que sustituye en la cadena sobre la que se
llamó las ocurrencias del patrón por la cadena especificada

José Venustiano Ticante Herná ndez Programación Web


Expresiones Regulares en JavaScript

Si ejecutamos el programa anterior la salida por pantalla será -100-1, es decir, la primera y
última llamada a search devuelven no encontrado y la segunda y las otras dos encuentran
la cadena en la posición 0. Si nos fijamos vemos que esto es obvio. El patrón que definimos
primero, /pat [ao] {2}/ incluye las cadenas “pataa”, “patao”, “patoo” y “patoa”, ya que lo que
indica {2} que debe repetirse dos veces es [ao], no pat[ao]. Sin embargo cuando
redefinimos el valor del patrón utilizamos los paréntesis de forma que {2} se aplique sobre
pat[ao].

Otro elemento interesante en las expresiones regulares es la especificación de las


posiciones en que se tiene que encontrar la cadena, esa es la utilidad de ^ y $, que indican
que el elemento sobre el que actúa debe ir al principio de la cadena o al final de esta.

//buscamos “oo” y que se encuentre al principio de la cadena en la que esté

var patrón = /^aa/;

//buscamos uu al final de la cadena

patron = /uu$/;

Otros elementos a tener en cuenta son:

 \d un dígito. Equivale a [0-9]


 \D cualquier carácter que no sea un dígito.
 \w Cualquier carácter alfanumérico. Equivalente a [a-zA-Z0-9_].
 \W cualquier carácter no alfanumérico
 \s espacio
 \t tabulador

José Venustiano Ticante Herná ndez Programación Web

También podría gustarte