Está en la página 1de 8

Carcter

^ $ * + ? Principio de entrada o lnea. Fin de entrada o lnea. El carcter anterior 0 o ms veces. El carcter anterior 1 o ms veces.

Texto buscado

El carcter anterior una vez como mximo (es decir, indica que el carcter anterior es opcional).

. x|y {n} {n,m} [abc]

Cualquier carcter individual, salvo el de salto de lnea. x o y. Exactamente n apariciones del carcter anterior. Como mnimo n y como mximo m apariciones del carcter anterior. Cualquiera de los caracteres entre corchetes. Especifique un rango de caracteres con un guin (por ejemplo, [a-f] es equivalente a [abcdef]).

[^abc]

Cualquier carcter que no est entre corchetes. Especifique un rango de caracteres con un guin (por ejemplo, [^a-f] es equivalente a [^abcdef]).

\b \B \d \D \f \n \r \s

Lmite de palabra (como un espacio o un retorno de carro). Cualquiera que no sea un lmite de palabra. Cualquier carcter de dgito. Equivalente a [0-9]. Cualquier carcter que no sea de dgito. Equivalente a [^0-9]. Salto de pgina. Salto de lnea. Retorno de carro. Cualquier carcter individual de espacio en blanco (espacios, tabulaciones, saltos de pgina o saltos de lnea).

\S \t \w \W

Cualquier carcter individual que no sea un espacio en blanco. Tabulacin. Cualquier carcter alfanumrico, incluido el de subrayado. Equivalente a [A-Za-z0-9_]. Cualquier carcter que no sea alfanumrico. Equivalente a [^A-Za-z0-9_].

La tabla siguiente contiene algunos de los patrones ms utilizados a la hora de validar formularios. Si alguien conoce alguna expresin regular ms -que pueda ser til en la validacin de formularios- la puede poner en los comentarios y yo la incorporar a esta tabla.
Cualquier letra en minuscula Entero Correo electrnico URL ^(?:\+|-)?\d+$ /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/ ^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)( [a-zA-Z0-9\\.\?\,\'\/\\\+&%\$#_]*)?$ Contrasea segura (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$ (Entre 8 y 10 caracteres, por lo menos un digito y un alfanumrico, y no puede contener caracteres espaciales) Fecha ^\d{1,2}\/\d{1,2}\/\d{2,4}$ (Por ejemplo 01/01/2007) Hora ^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$ (Por ejemplo 10:45:23) Nmero tarjeta de crdito Nmero telfono Cdigo postal Certificado Identificacin Fiscal ^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\ d{2}?\s?\d{6}-?\s?\d{5}$ ^[0-9]{2,3}-? ?[0-9]{6,7}$ ^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$ ^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}(-|\.)? [0-9A-Z]|\d{8}(-|\.)?[A-Z])$ [a-z]

4. Validar un nmero de telfono


Con este snippet se validarn todos los nmero de telfono pertenecientes a los listados en la Wikipedia:
1. ^\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d$

5. Validar nmero de tarjeta de crdito


Ahora que tan de moda est el e-commerce seguro que esto le vendr bien a ms de uno:
1. ^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\ d{2}-?\s?\d{6}-?\s?\d{5}$

6. Recoger ID de un vdeo de Youtube


Si necesitas recoger el ID de un vdeo de Youtube en sus mltiples combinaciones, esta es tu expresin regular:
1. /http:\/\/(?:youtu\.be\/|(?:[a-z]{2,3}\.)?youtube\.com\/watch(?:\?|#\!)v=)([\w-]{11}).*/gi

7. Validar todas las etiquetas de imagen sin cerrar

Ahora que prcticamente todos empleamos xHTML es interesante comprobar que todas nuestras etiquetas de imagen estn correctamente cerradas:
1. <img([^>]+)(\s*[^\/])></img([^>

8. Validar una direccin IP


Si necesitas validar una direccin IP introducida por un usuario, esto te ser de gran ayuda:
1. /^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/

9. Validar cdigo postal


En muchas ocasiones necesitamos recoger en los formularios de alta el cdigo postal:
1. ^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$

10. Validar un nombre de usuario


Si por ejemplo quisisemos validar un nombre de usuario con un mnimo de 4 caracteres y un mximo de 15 haramos lo siguiente:
1. /^[a-z\d_]{4,15}$/i

Adems el nombre estara utilizando slo caracteres de la A-z y nmeros.

Expresiones Regulares
Las expresiones regulares constituyen un mecanismo bastante potente para realizar manipulaciones de cadenas de texto. El proceso para el que se usan estas expresiones, presente en el mundo el UNIX y el lenguaje Perl, es el de buscar y/o substituir una subcadena de texto dentro de otra cadena. En principio esto puede hacerse usando los mtodos del objeto string, pero el problema surge cuando no tenemos una subcadena fija y concreta sino que queremos buscar un texto que responda a un cierto esquema, como por ejemplo: buscar aquellas palabras que comienzan con http: y finalizan con una \, o buscar palabras que contengan una serie de nmeros consecutivos, etc.; es en estos casos cuando tenemos que utilizar las expresiones regulares. La subcadena que buscamos en el texto es lo que se llama un patrn y se construye encerrando entre dos barras inclinadas ( / ) una serie de caracteres normales y smbolos especiales llamados comodines o metacaracteres, (algo parecido a buscar archivos con nombre *.bat cuando queremos encontrar los ficheros con extensin bat). Este patrn es una descripcin del texto que se est buscando y JavaScript encontrar las subcadenas que concuerdan con ese patrn o definicin. Las expresiones regulares se usan con el objeto Regular Expresion y tambin dentro de los mtodos String.match, String.replace, String.search y String.split. En la tabla que sigue se muestran los caracteres comodn usados para

crear los patrones y su significado, junto a un pequeo ejmplo de su utilizacin.

Significado

Ejemplo

Resultado

\ Marca de carcter especial ^ Comienzo de una lnea $ Final de una lnea Cualquier /^-/ /\$ftp/

Busca la palabra $ftp Lneas que comienzan por Lneas que terminan por s

/s$/

carcter (menos salto de lnea)

/\b.\b/

Palabras de una sla letra

| Indica opciones ( Agrupar ) caracteres [ Conjunto de ] caracteres opcionales

/(L|l|f|)ocal/

Busca Local, local, focal Busca vocal

/(vocal)/

/escrib[aoe]/

Vale escriba, escribo, escribe

La tabla que sigue describe los modificadores que pueden usarse con los caracteres que forman el patrn. Cada modificador acta sobre el carcter o el parntesis inmediatamente anterior.

Descripcin

Ejemplo

Resultado

Repetir 0 o ms veces

/l*234/

Valen 234, 1234, 11234... Valen amar, aamar, aaamar... Valen amar, mar. Vale ppsado

Repetir 1 o ms veces

/a*mar/ /a?mar/ /p{2}sado/

? {n}

1 o 0 veces Exactamente n veces

{n,} Al menos n veces {m,n} entre m y n veces

/(m){2}ala/

Vale mmala, mmmala.... Vale tala, talla, tallla

/tal{1,3}a/

Los siguientes son caracteres especiales o metacaracteres para indicar caracteres de texto no imprimibles, como puedan ser el fn de lnea o un tabulador, o grupos predefinidos de caracteres (alfabticos, numricos, etc...)

Significado \b Principio o final de palabra \B Frontera entre nopalabras \d \D \O \t Un dgito Alfabtico (no dgito) Carcter nulo Caracter ASCII 9 (tabulador) \f \n \w Salto de pgina Salto de lnea Cualquier alfanumrico, [a-zA-Z0-9_ ] \W Opuesto a \w ([^a-zA-Z0-9_ ]) \s Carcter tipo espacio (como tab) \S \cX Opuesto a \s Carcter de control X

Ejemplos /\bver\b/

Resultado Encuentra ver en "ver de", pero no en "verde" Empareja ver con

/\Bver\B/

"Valverde" pero no con "verde"

/[A-Z]\d/ /[A-Z]\D/

No falla en "A4" Fallara en "A4"

Encuentra frase en /\w+/ "frase.", pero no el . (punto). /\W/ Hallara slo el punto (.) Encuentra Si en "Digo Si /\sSi\s/ ", pero no en "Digo Sientate"

\c9

El tabulador

\oNN Carcter octal NN \xhh El hexadecimal hh /\x41/ Encuentra la A (ASCII Hex41) en "letra A"

Las expresiones regulares son una forma de describir cadenas de caracteres que sirven para comparaciones y reemplazos complejos. Por ejemplo si escribimos en la lnea de comandos de windows dir *.exe, eso es una expresin regular que define todas las cadenas de caracteres que empiecen con cualquier cosa seguida de .exe, es decir, todos los archivos .exe. La accin de comparar la cadena de texto con el patrn que le hemos dado (la expresin 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 expresin regular podemos usar el constructor del objeto RegExp, pero es mas conveniente utilizar una sintaxis especialmente pensado para ello. Veamos un ejemplo, el mas simple posible. var patron = /pato/; Este es el patrn mas sencillo. En una comparacin con una cadena devolvera 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 deciamos utilizando su constructor. var patron = 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 mas las cosas supongamos que queremos comprobar si la cadena que nos pasan es pato, pata o pate. Entonces usariamos los corchetes, que indican opcin, es decir, al comparar con /[aeo]/ devolvera cierto en caso de que la cadena fuera la letra a, la e o la letra o. var patron = /pat[aeo]/; Y si quisieramos comprobar si la cadena es pat0, pat1, pat2, , pat9? En lugar de tener que encerra los 10 dgitos dentro de los corchetes podemos utilizar el guin, que sirve para indicar rangos. Por ejemplo 0-9 seran todos los nmeros de 0 a 9 inclusive. var patron = /pat[0-9]/; Si quisieramos por ejemplo que el ltimo caracter fuera o un dgito (0-9) o una letra minscula (a-z) simplemente se escribiran dentro de los corchetes un criterio detras de otro. //pat seguido de un nmero o letra minscula var patron = /pat[0-9a-z]/; //ahora tambin puede estar seguido de una A mayscula var patron2 = /pat[0-9a-zA]/;

Y que ocurrira si en lugar de tener solo un nmero o una letra minscula quisieramos que pudieran haber varias, pero siempre minsculas o nmeros? Entonces recurrimos a +, *, ? y {}. + indica que lo que tiene a su izquierda puede estar 1 o mas veces, * indica que puede estar 0 o mas veces (en el caso de + el nmero o la minscula tendra que aparecer al menos una vez, con * pat tambin se aceptara), ? 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 nmero de veces o que puede aparecer o un rango. Por ejemplo {3} indicara que tiene que aparecer exactamente 3 veces, {3,8} indicara que tiene que aparecer de 3 a 8 veces y {3,} tres veces o mas (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 patron = /pat[ao]{2}/; document.write(patopata.search(patron)); document.write(patoa.search(patron)); patron = /(pat[ao]){2}/; document.write(patopata.search(patron)); document.write(patoa.search(patron)); </script> La funcin search del tipo de objeto de String (asociado a las cadenas de caracteres) comprueba si la cadena representada por el patrn 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 posicin (por ejemplo para la cadena pato con el patron /p/ devolvera 0, 1 si el patrn es a, 2 si es t,) y -1 si no se encuentra. Otra funcin til que merece la pena comentar es cadena.replace(patron, sustituto), que sustituye en la cadena sobre la que se llam las ocurrencias del patrn 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 posicin 0. Si nos fijamos vemos que esto es obvio. El patrn 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 patron utilizamos los parntesis de forma que {2} se aplique sobre pat[ao]. Otro elemento interesante en las expresiones regulares es la especificacin 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 acta 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 patron = /^aa/; //buscamos uu al final de la cadena patron = /uu$/; Otros elementos a tener en cuenta son:

\d un dgito. Equivale a [0-9] \D cualquier caracter que no sea un dgito. \w Cualquier caracter alfanumrico. Equivalente a [a-zA-Z0-9_]. \W cualquier caracter no alfanumrico \s espacio \t tabulador

También podría gustarte