Está en la página 1de 9

Programacin en Internet 2009-2010

Departamento de Lenguajes y Sistemas Informticos

JavaScript: E Expresiones i regulares l

Programacin en Internet Curso 2009-2010

Programacin en Internet Curso 2009-2010

Algunas personas cuando se enfrentan a un problema piensan "Ya s, usar expresiones regulares!" Ahora tienen dos problemas.
Jamie Zawinski, Zawinski programador de Netscape Navigator 1 1.1 1

DLSI - Universidad de Alicante

Programacin en Internet 2009-2010

Programacin en Internet Curso 2009-2010

ndice
Introduccin Expresiones regulares en JavaScript Ejemplos

Programacin en Internet Curso 2009-2010

Introduccin
Una expresin regular es un patrn que se emplea l para compararlo l con un grupo d de caracteres Segn la Wikipedia:
Una expresin regular, a menudo llamada tambin patrn, es una expresin que describe un conjunto de cadenas sin enumerar sus elementos elementos. Por ejemplo, el grupo formado por las cadenas Handel, Hndel y Haendel se describe mediante el patrn "H(a||ae)ndel".

DLSI - Universidad de Alicante

Programacin en Internet 2009-2010

Programacin en Internet Curso 2009-2010

Introduccin
Las expresiones regulares se pueden emplear l en:
Comandos de sistemas operativos, como sed y grep en Linux Editores de texto como emacs Lenguajes de programacin, de forma nativa como JavaScript, p , PHP, , awk y Perl, , o a travs de libreras como Java o .NET

Bsicamente, existen dos estilos de expresiones regulares que en algunos aspectos son iguales

Programacin en Internet Curso 2009-2010

Introduccin
Una expresin regular es un patrn que puede estar formado por un conjunto de caracteres (letras, nmeros o signos) y por un conjunto de metacaracteres que representan otros caracteres o que indican la forma de combinar los caracteres Los metacaracteres reciben este nombre porque no se representan a ellos mismos, sino que son interpretados de una manera especial

DLSI - Universidad de Alicante

Programacin en Internet 2009-2010

Programacin en Internet Curso 2009-2010

Introduccin
Los metacaracteres ms usados son: .*?+[](){}^$|
^: Sirve para indicar que el patrn que lo acompaa esta al principio de la cadena. $: Indica que el patrn esta al final de una cadena. .: Representa cualquier carcter. *: El patrn que lo precede se repite 0 o mas veces. ?: El patrn se repite 0 o 1 vez. +: El patrn se repite 1 o mas veces. {x,y}: El patrn se repite un mnimo de x veces y un mximo de y. |: Sirve para alternar expresiones.

Programacin en Internet Curso 2009-2010

Introduccin
Los corchetes [] incluidos en un patrn permiten especificar el rango de caracteres vlidos a comparar.
[abc] // El patrn coincide con la cadena si en esta hay // cualquiera de estos tres carcteres: a, b, c [a-c] // Coincide si existe una letra en el rango ("a", "b" o "c") c[ao]sa // Coincide con casa y con cosa [^abc] // El patrn coincide con la cadena si en esta NO hay ninguno // de estos tres carcteres: a, b, c. // Nota que el signo ^ aqu tiene un valor excluyente [0-9] // Coincide con una cadena que contenga cualquier // nmero entre el 0 y el 9

DLSI - Universidad de Alicante

Programacin en Internet 2009-2010

Programacin en Internet Curso 2009-2010

Introduccin
(): Los parntesis sirven para agrupar expresiones regulares. |: Sirve para alternar expresiones. Por ejemplo: (la|el): coincide si esta presente la o el. Para escapar caracteres especiales debemos usar la clsica barra invertida \ \ . Por ejemplo si buscamos 100$, pondramos 100\$, ya que si pusiramos 100$ buscara un 100 a final de cadena.

Programacin en Internet Curso 2009-2010

Patrn . ^c c$ c+ c* c? \n \t \ (cd) c|d c{n} c{n,} c{n,m}

Significado cualquier carcter (excepto \n y \r) empezar por el carcter c terminar por el carcter c 1 o ms caracteres c 0 o ms caracteres c 0 o 1 caracteres c nueva lnea tabulador escape, para escribir delante de caracteres especiales: ^ . [ ] % ( ) | * ? { } \ caracteres c y d agrupados carcter c o d n veces el carcter c n o ms caracteres c desde n hasta m caracteres c

DLSI - Universidad de Alicante

Programacin en Internet 2009-2010

Programacin en Internet Curso 2009-2010


Patrn [a-z] [A-Z] [0-9] [cde] [c-f] [^c] \w \W \d \D \s \S \b \B Significado cualquier letra minscula cualquier letra mayscula cualquier dgito cualquiera de los caracteres c, d o e cualquier letra entre c y f (es decir, decir c c, d d, e o f) que no est el carcter c cualquier letra o dgito o subrayado (pero no vocales acentuadas, , , etc.) lo contrario de \w cualquier dgito lo contrario de \d cualquier espacio en blanco lo contrario de \s busca un emparejamiento a partir de un lmite de palabra busca un emparejamiento cuando no es un lmite de palabra

Programacin en Internet Curso 2009-2010

Expresiones regulares en JavaScript


Podemos crear una ER de dos formas:
/* Permite crear expresiones regulares en tiempo de ejecucin */ var txt=new RegExp(pattern,attributes); /* Crea expresiones regulares estticas, no se pueden modificar durante la ejecucin */ var txt=/pattern/attributes; /p / ;

DLSI - Universidad de Alicante

Programacin en Internet 2009-2010

Programacin en Internet Curso 2009-2010

Expresiones regulares en JavaScript


Los atributos son:
m: Si nuestra t cadena d contiene ti varias i lneas l f i fsicas (\n) respeta esos saltos de lnea, lo que significa, por ejemplo, que las anclas ^ $ no se aplican al principio y final de la cadena, sino al principio y final de cada lnea. i: Se confronta el patrn con la cadena ignorando mayusculas l y minsculas. i l g: Realiza una bsqueda global, no se detiene en la primera ocurrencia que encuentra.

Programacin en Internet Curso 2009-2010

Expresiones regulares en JavaScript


Mtodos del objeto RegExp:
compile(): cambia la expresin regular del objeto exec(): busca la ER, devuelve el valor encontrado y recuerda la posicin test(): busca la ER, devuelve true o false

DLSI - Universidad de Alicante

Programacin en Internet 2009-2010

Programacin en Internet Curso 2009-2010

Expresiones regulares en JavaScript


Adems, el objeto String tiene unos mtodos t d que admiten d it ER ER:
search(): busca en una cadena la ER, devuelve la posicin match(): busca en una cadena la ER, devuelve un array con los valores emparejados p (): sustituye y unos caracteres p por otros replace() caracteres split(): divide una cadena en un array de cadenas

Programacin en Internet Curso 2009-2010

Ejemplos
Valida una matrcula moderna:
function validaMatricula() { var mat = document.getElementById("matricula").value; var ex1 = new RegExp("^[0-9]{4} [A-Z]{3}$"); var ex2 = /^[0-9]{4} [A-Z]{3}$/; if(ex1.test(mat)) alert("Ok"); else alert("Error"); if(ex2.test(mat)) alert("Ok"); else alert("Error"); }

DLSI - Universidad de Alicante

Programacin en Internet 2009-2010

Programacin en Internet Curso 2009-2010

Ejemplos
Valida una fecha (slo el formato):
function validaFecha() { var fec = document.getElementById("fecha").value; var ex1 = new RegExp("^(0?[1-9]|[12][0-9]|3[01])\/(0?[19]|1[012])\/[0-9]{1,2}$"); var ex2 = /^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[012])\/[09]{1,2}$/; if(ex1.test(fec)) alert("Ok"); else alert("Error"); if(ex2.test(fec)) alert("Ok"); else alert("Error"); }

DLSI - Universidad de Alicante

También podría gustarte