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