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.

 

  1. 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})$’

  2. Caracteres Alfa-numericos

    PHP/Perl
    ‘/^[a-zA-Z0-9]*$/’

    JS
    ‘^[a-zA-Z0-9]+$’

  3. Caracteres Alfa-numericos con espacios

    ‘/^[a-zA-Z0-9 ]*$/’

  4. Caracteres Alfabeticos

    PHP/Perl
    ‘/^[a-zA-Z]*$/’

    JS
    ‘^[a-zA-Z]+$’

  5. Tarjeta American Express

    ‘/^(3[47][0-9]{13})*$/’

  6. 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}))*$/’

  7. 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]$’

  8. Provincias Canadiences
    Evalua las abreviaturas de provincias canadiences.

    ‘/^(?:AB|BC|MB|N[BLTSU]|ON|PE|QC|SK|YT)*$/’

  9. 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}$’

  10. 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])$’

  11. Digitos

    PHP/Perl
    ‘/^[0-9]*$/’

    JS
    ‘^[0-9]+$’

  12. Tarjeta de credito Diner’s Club

    ‘/^(3(?:0[0-5]|[68][0-9])[0-9]{11})*$/’

  13. 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}$’

  14. 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]?))*$/’

  15. Caracteres alfabeticos en minusculas

    ‘/^([a-z])*$/’

  16. Tarjeta MasterCard

    ‘/^(5[1-5][0-9]{14})*$/’

  17. 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]))^.*”

  18.  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})+$’

  19. Seguro social norte americano
    Valida numeros de seguro social norte americanos.

    ‘/^((([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+)*$/’

  20. Codigo Postal de UK

    ‘/^([A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2})*$/’

  21. Caracteres Alfabeticos en mayuscula

    ‘/^([A-Z])*$/’

  22. 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]/+=%&_\.~?\-]*)$’

  23. 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])*$/’

  24. Codigos ZIP de US

    PHP/Perl
    ‘/^([0-9]{5}(?:-[0-9]{4})?)*$/’

    JS
    ‘^[0-9]{5}(?:-[0-9]{4})?$’

  25. 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.

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.

 

Fuente: http://www.virtuosimedia.com/dev/