Las expresiones regulares son un mecanismo que nos permite realizar búsquedas y reemplazos de textos complejos.
Por ejemplo podríamos sustituir todas las ocurrencias del texto "www.yahoo.com" por "www.google.com" utilizando la siguiente expresión regular en javascript:
texto.replace(/www.yahoo.com/gi,"www.google.com")
El lenguage PERL es el que ha hecho crecer a las expresiones regulares hasta llegar a ser lo que conocemos hoy. En PHP y javascript se contruyen los patrones de forma similar, con Javascript podemos aprovecharnos de ellas mediante los métodos del objeto string, y en php con funciones como preg_search o preg_replace.
Para crear patrones tenemos los siguientes caracteres comodín: | |
Marca de carácter especial | |
^ | Comienzo de línea / Negación cuando está dentro de ( ) o [ ] |
$ | Final de línea |
. | Cualquier carácter salvo el salto de línea |
| | Para indicar opciones |
( ) | Para agrupar caracteres |
[ ] | Conjunto de caracteres opcionales |
Modificadores. Cada modificador actúa sobre el carácter o el paréntesis inmediatamente anterior. | |
* | Aparece 0 o más veces |
+ | 1 o más veces |
? | 1 ó 0 veces |
{n} | Exactamente n veces |
{n,} | n veces o más |
{n,m} | Entre m y n |
Caracteres especiales | |
\b | Principio o fin de palabra |
\B | Marca la frontera en una palabra |
\d | Dígito |
\D | Carácter alfabético |
\O | Carácter nulo |
\t | Tabulador |
\f | Salto de página |
\n | Salto de línea |
\w | Carácter alfanumérico [a-zA-Z0-9_ ] |
\W | Lo contrario a w ([^a-zA-Z0-9_ ]) |
\s | Espacio |
\S | Lo contrario a espacio |
\cX | carácter de control X |
\oNN | carácter octal NN |
\xHH | hexadecimal HH |
Al final del patrón también podemos utilizar modificadores | |
i | El patrón es indiferente a mayúsculas o minúsculas |
g | Busca todas las ocurrencias del patrón |
Algunas expresiones regulares útiles:
/(http)[s?]://)/gi | Busca todas las palabras que contengan http:// o https://, insensible a mayúsculas |
/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/ | Para validar emails |
^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$ | Para validar urls |
/^[#]$([a-f0-9]{3})|([a-f0-9]{6})$/i | Para validar un color en formato html |
Comentarios