Está en la página 1de 4

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

/\$ftp/ /^-/ /s$/ /\b.\b/

Busca la palabra $ftp Lneas que comienzan por Lneas que terminan por s Palabras de una sla letra

Cualquier carcter (menos salto de lnea)

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

/(L|l|f|)ocal/ Busca Local, local, focal /(vocal)/ /escrib[aoe]/ Busca vocal 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

* + ? {n}

Repetir 0 o ms veces Repetir 1 o ms veces 1 o 0 veces Exactamente n veces

/l*234/ /a*mar/ /a?mar/ /p{2}sado/ /(m){2}ala/ /tal{1,3}a/

Valen 234, 1234, 11234... Valen amar, aamar, aaamar... Valen amar, mar. Vale ppsado Vale mmala, mmmala.... Vale tala, talla, tallla

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

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 \B \d \D \O \t \f \n \w \W \s \S \cX Principio o final de palabra Frontera entre no-palabras Un dgito Alfabtico (no dgito) Carcter nulo Caracter ASCII 9 (tabulador) Salto de pgina Salto de lnea Cualquier alfanumrico, [a-zA-Z0-9_ ] Opuesto a \w ([^a-zA-Z0-9_ ]) /\w+/ /\W/ Encuentra frase en "frase.", pero no el . (punto). Hallara slo el punto (.) Encuentra Si en "Digo Si ", pero no en "Digo Sientate" El tabulador Encuentra la A (ASCII Hex41) en "letra A" Ejemplos /\bver\b/ /\Bver\B/ /[A-Z]\d/ /[A-Z]\D/ Resultado Encuentra ver en "ver de", pero no en "verde" Empareja ver con "Valverde" pero no con "verde" No falla en "A4" Fallara en "A4"

Carcter tipo espacio (como /\sSi\s/ tab) Opuesto a \s Carcter de control X \c9

\oNN Carcter octal NN \xhh El hexadecimal hh /\x41/

La tabla siguiente contiene los caracteres especiales de las expresiones regulares. 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. El carcter anterior una vez como mximo (es decir, indica que el carcter anterior es opcional). 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]). Cualquier carcter que no est entre corchetes. Especifique un rango de caracteres con un guin (por ejemplo, [^a-f] es equivalente a [^abcdef]). 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). 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_].

Texto buscado

. x|y {n} {n,m}

[abc]

[^abc]

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

\s

\S \t \w \W

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]

También podría gustarte