Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Expresiones Regulares en Javascript
Expresiones Regulares en Javascript
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.
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.
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.
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.
<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
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].
patron = /uu$/;