Artículo de presentación de las expresiones regulares. Echamos un vistazo a 10 expresiones regulares que os librarán de más de un dolor de cabeza a la hora de validar vuestros formularios o datos. ¡No os lo perdáis porque son realmente útiles!

Autor:

Hola! Soy diseñador, programador web y cofundador de la startup Cokidoo, desarrollamos aplicaciones web a gran escala y comercio electrónico, aplicaciones para móviles y advertising. Puedes seguirme através de mi twitter y ver algunos de mis themes en Themeforest. También soy aficionado a la fotografía.

¿Qué son las expresiones regulares?

Odiadas por unos, adoradas por otros… en cualquier caso las expresiones regulares son siempre útiles y necesarias para validar todo tipo de datos, buscar, encontrar coincidencias en cadenas de texto y mucho más.

Si tuviéramos que dar una definición de forma técnica, una expresión regular (o patrón) es una expresión que describe un conjunto de cadenas sin enumerar sus elementos.

Así pues en una búsqueda de dos caracteres concretos, no importará si número de caracteres es 10 o un millón, las expresiones regulares nos porporcionarán una solución al problema. Además de buscar, también podremos saber si una cadena es una fecha, un e-mail, una dirección web… tan sólo deberemos conocer el patrón necesario a escribir.

A continuación compartimos con todos vosotros 10 expresiones regulares que a buen seguro usaréis en más de una ocasión y que serán siempre útiles en vuestros proyectos web.

1. Validar una URL

¿Quieres saber si una dirección web es válida? No hay problema con esta expresión regular lo tendremos muy fácil:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \?=.-]*)*\/?$/

2. Validar un E-mail

En muchas ocasiones necesitaremos saber si un e-mail con el que se trata de registrar un usuario es válido:

^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$

3. Comprobar la seguridad de una contraseña

Para aquellos que necesitáis sugerir / comprobar la fortaleza de una contraseña:

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

De esta forma comprobaremos:

  • Contraseñas que contengan al menos una letra mayúscula.
  • Contraseñas que contengan al menos una letra minúscula.
  • Contraseñas que contengan al menos un número o caracter especial.
  • Contraseñas cuya longitud sea como mínimo 8 caracteres.
  • Contraseñas cuya longitud máxima no debe ser arbitrariamente limitada.

4. Validar un número de teléfono

Con este snippet se validarán todos los número de teléfono pertenecientes a los listados en la Wikipedia:

^\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d$

5. Validar número de tarjeta de crédito

Ahora que tan de moda está el e-commerce seguro que esto le vendrá bien a más de uno:

^((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}$

6. Recoger ID de un vídeo de Youtube

Si necesitas recoger el ID de un vídeo de Youtube en sus múltiples combinaciones, esta es tu expresión regular:

/http:\/\/(?:youtu\.be\/|(?:[a-z]{2,3}\.)?youtube\.com\/watch(?:\?|#\!)v=)([\w-]{11}).*/gi

7. Validar todas las etiquetas de imagen sin cerrar

Ahora que prácticamente todos empleamos xHTML es interesante comprobar que todas nuestras etiquetas de imagen están correctamente cerradas:

]+)(\s*[^\/])>

8. Validar una dirección IP

Si necesitas validar una dirección IP introducida por un usuario, esto te será de gran ayuda:

/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/

9. Validar código postal

En muchas ocasiones necesitamos recoger en los formularios de alta el código postal:

^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$

10. Validar un nombre de usuario

Si por ejemplo quisiésemos validar un nombre de usuario con un mínimo de 4 caracteres y un máximo de 15 haríamos lo siguiente:

/^[a-z\d_]{4,15}$/i

Además el nombre estaría utilizando sólo caracteres de la A-z y números.

Hasta aquí por hoy…

Nos despedimos después de este artículo perteneciente a la nueva categoría Snippets no sin antes acordarnos de algunas de las fuentes que hemos utilizado para la búsqueda de estas expresiones regulares:

Esperamos como siempre que os haya resultado útil y podáis utilizar la información compartida en vuestros proyectos…

¡Nos vemos en el próximo artículo!

Te sugerimos otras entradas relacionadas...

No hay entradas relacionadas para esta publicación.

¿Necesitas desarrollar un proyecto web o para móviles? ¡Estamos disponibles!

Visitar Cokidoo

Cokidoo, los creadores de Ontuts, desarrollamos proyectos tecnológicos centrados en redes sociales y aplicaciones web, aplicaciones móviles y consultoría web y bases de datos.

Somos jóvenes, inquietos, versátiles, apasionados por la innovación y enfocados en las nuevas tecnologías. Con Ontuts tratamos de compartir nuestro conocimiento adquirido en los distintos proyectos, ayudando a la comunidad y mostrando nuestra capacidad tecnológica.

Si necesitas un presupuesto sin compromiso, estamos disponibles, no dudes en contactar con nosotros.

Comentarios en esta publicación (11 comentarios)

¿Te ha gustado esta publicación? ¡Puedes compartir tu opinión con todos nosotros! Simplemente pincha aquí mismo.

Jordi

No entiendo donde se tiene que poner ese codigo, en PHP

Ernesto Jiménez Villaseñor

Exelente, siempre me ha gustado usar las expresiones regulares, aunque cambian de vez en vez dependiendo, por suerte en lso ecma son casi siempre iguales, por lo menos me toca usar siempre las misma para ActionScript que en JavaScript, el aporte es tremendamente bueno, ya que no todas las personas les gusta meterse en estos rollos, hay literatura que esta dedicada a explicar unicamente los posibles usos de las exptresiones regulares, muy buenos post los tuyos, han hecho que deje esta web en favoritos.

Diseñowebperu

Gracias por mostrarme las expresiones regulares me fueron muy utiles en mi diseño de paginas web.

Lo siento, pero para el email no estoy de acuerdo. Te has olvidado de un montón de símbolos totalmente válidos en una dirección de email:
http://en.wikipedia.org/wiki/E-mail_address#Syntax

@Daniel tu siempre tan atento… así da gusto :D

¿Puedes compartir la que utilizas tu?

Diego

Daniel, puedes compartir la que utilizas para validar emails?, necesito validar en una query en mysql y hay varias que he probado, gracias!

RedBlackTree

Me parece ke hay un pekenno problema en la del IP prueben esto 127.0.0

Lenin Bifnavent

Excelente, me sirvió mucho gracias, pueden comprobar sus expresiones regulares aqui: http://regexpal.com/

es muy bueno y fácil de utilizar

carlos

necesito un expresion regular para la fecha en formato yyy mm aa porq la q tengo me valida en dd mm aaa y mysql no guarda en ese formato este es me codigo

function validacion(formulario) {

//letra, numero,
var codequipo = /^([a-zA-Z0-9_ ])+$/ //letra, numero,
var nombreequipo = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|\s|\.|-)+$/ //letras, ‘.’ y ‘-’ o vacio
var descripcion = /^([a-zA-Z0-9_ \s])+$/ //letras, ‘.’ y ‘-’ o vacio
//fechas, formato dd/mm/aaaa o d/m/aa
var er_mes31dias = /^([1-3]0|[0-2][1-9]|31|[0-9])\/(1|01|3|03|5|05|7|07|8|08|10|12)\/(1999|20[0-1][0-9]|2020)$/
var er_mes30dias = /^([1-3]0|[0-2][1-9]|[0-9])\/(4|04|6|06|9|09|11)\/(1999|20[0-1][0-9]|2020)$/
var er_mes28dias = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(1999|200[1-3]|200[5-7]|2009|201[0-1]|201[3-5]|201)$/
var er_mes29dias = /^([1-2]0|[0-2][1-9]|[0-9])\/(02|2)\/(2000|2004|2008|2012|2016|2020)$/
for(x = 1; x 50) {
alert(‘La lontitud máxima permitida para cualquier campo es de 10 caracteres.’)
return false
}
}

if(!codequipo.test(formulario.codequipo.value)) {
alert(‘Contenido del campo Codequipo no válido.’)
return false
}
if(!nombreequipo.test(formulario.nombreequipo.value)) {
alert(‘Contenido del campo NOMBRE EQUIPO no válido. Debe contener solo Letras ‘)
return false
}

if(!descripcion.test(formulario.descripcion.value)) {
alert(‘Contenido del campo DESCRIPCION no válido. Debe contener letra y numero’)
return false
}

if (!(er_mes31dias.test(formulario.fechaingreso.value) ||
er_mes29dias.test(formulario.fechaingreso.value) ||
er_mes28dias.test(formulario.fechaingreso.value))) {
alert(‘Contenido del campo FECHA no válido.’)
return false
}

return true

//cambiar por return true para ejecutar la accion del formulario
}

Francisco Torres

Gracias bro muy util , has salvado mi viernes!!!

Orlando Flores

si según la wikipedia 0@a es una dirección de e-mail válida entonces estoy confundido.