Una expresión regular tambien llamada regex o regexp en su forma corta, es una simple pieza de codigo que encaja con un patron. Crear una expresion regular puede ser una tarea dificil y quisas no las necesitaras todo el tiempo.
Con la idea de ahorrate tiempo he compilado una lista de expresiones regulares probadas en PHP, Perl y JavaScript que son de uso comun y estan listas para su uso. Esto no es un tutorial de expresiones regulares ni tampoco una referencia, debe ser mas como una hoja de trampa para cuando necesites una expresion regular pero no buscas invertir mucho tiempo en reaprender expresiones regulares.
Expresiones Regulares de PHP y Perl
Las expresiones regulares de PHP estan basadas en la PCRE (Perl-Compatible Regular Expressions), de manera que cualquier expresion regular que funcione en uno de los lenguajes que se base en PCRE funcionara tambien para los demas que manejen el formato PCRE. Aqui encontraras las expresiones regulares mas comunmente necesitadas tanto en PHP como en Perl. Cada expresion regular sera presentada en formato cadena de texto e incluye sus delimitadores.
- Principales Tarjetas de Crédito
Esta expresion regular valida las principales tarjetas de crédito: American Express (Amex), Discover, Mastercard, y Visa.PHP/Perl
‘/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|622((12[6-9]|1[3-9][0-9])|([2-8][0-9][0-9])|(9(([0-1][0-9])|(2[0-5]))))[0-9]{10}|64[4-9][0-9]{13}|65[0-9]{14}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})*$/’JS
‘^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$’ - Caracteres Alfa-numericosPHP/Perl
‘/^[a-zA-Z0-9]*$/’JS
‘^[a-zA-Z0-9]+$’ - Caracteres Alfa-numericos con espacios
‘/^[a-zA-Z0-9 ]*$/’
- Caracteres Alfabeticos
PHP/Perl
‘/^[a-zA-Z]*$/’JS
‘^[a-zA-Z]+$’ - Tarjeta American Express‘/^(3[47][0-9]{13})*$/’
- Codigo Postal Australiano
‘/^((0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2}))*$/’
- Codigo Postal Canadience
PHP/Perl
‘/^([ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9])*$/’JS
‘^[ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9]$’ - Provincias Canadiences
Evalua las abreviaturas de provincias canadiences.‘/^(?:AB|BC|MB|N[BLTSU]|ON|PE|QC|SK|YT)*$/’
- Fecha (MM/DD/YYYY)
Valida fechas de calendario con formato MM/DD/YYYY. Separadores opcionales son espacios, guiones, barras diagonales, y periodos. El año esta limitado entre 1900 y 2099.PHP/Perl
‘/^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/’JS
‘^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}$’ - Fecha (YYYY/MM/DD)
Valida fechas de calendario con formato YYYY/MM/DD. Separadores opcionales son espacios, guiones, barras diagonales, y periodos. El año esta limitado entre 1900 y 2099.PHP/Perl
‘#^((19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))*$#’JS
‘^(19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])$’ - Digitos
PHP/Perl
‘/^[0-9]*$/’JS
‘^[0-9]+$’ - Tarjeta de credito Diner’s Club
‘/^(3(?:0[0-5]|[68][0-9])[0-9]{11})*$/’
- Emails
PHP/Perl
‘/^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/’JS
‘^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$’ - Direcciones IP
‘/^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$/’
- Caracteres alfabeticos en minusculas
‘/^([a-z])*$/’
- Tarjeta MasterCard
‘/^(5[1-5][0-9]{14})*$/’
- Contraseñas
Valida que una contraseña sea fuerte. La contraseña debe contener un caracter en minuscula, una mayuscula, un numero, y debe tener por lo menos 6 caracteres de largo.PHP/Perl
‘/^(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*$/’JS
“(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*” - Numeros telefonicos Norte Americanos
Valida numeros telefonicos norte americanos que cuentan con 10 digitos. Separadores no son necesarios, pero se pueden incluir espacios, guiones y periodos. Los parentesis del codigo de area son opcionales.PHP/Perl
‘/^((([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+)*$/’JS
‘^(([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+$’
- Seguro social norte americano
Valida numeros de seguro social norte americanos.‘/^((([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+)*$/’
- Codigo Postal de UK
‘/^([A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2})*$/’
- Caracteres Alfabeticos en mayuscula
‘/^([A-Z])*$/’
- URLs
PHP/Perl
‘/^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$/’JS
‘^((http|https|ftp)://)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]/+=%&_\.~?\-]*)$’ - Estados de US
Valida las dos letras del los estados de US.‘/^(?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])*$/’
- Codigos ZIP de US
PHP/Perl
‘/^([0-9]{5}(?:-[0-9]{4})?)*$/’JS
‘^[0-9]{5}(?:-[0-9]{4})?$’ - Tarjetas Visa
‘/^(4[0-9]{12}(?:[0-9]{3})?)*$/’
Otros tutoriales Regex
Esta pagina te ha proporcionado algunas expresiones regulares de uso comun, pero si deseas modificar o aprender mas de las expresiones regulares te recomiendo estos tutoriales.
- Regex Crash Course (Part 1)
- Regex Crash Course (Part 2)
- Using Regular Expressions With PHP
- Perl Text Patterns For Search And Replace
- Using Regular Expressions With The Microsoft .NET Framework
- Python’s re Module
- Using Regular Expressions with Ruby
- Using Regular Expressions with JavaScript and ActionScript
- Regular Expressions – A Simple User’s Guide
- Mastering Regular Expressions (from Google Books)
Algunos recursos y hojas de referencia de Regex
Aqui tienes algunas hojas de referencia, librerias, testers y otros recursos para expresiones regulares en la web.
- Regular Expression Basic Syntax Reference
- REGULAR EXPRESSIONS CHEAT SHEET (V2)
- RegExLib.com Regular Expression Cheat Sheet (.NET)
- RegEx Library
- RegEx Online Tester
- Regex Useful Resources
- Regular Expression Generator