Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

 
 
Herramientas Buscar en Tema Desplegado
  #18  
Antiguo 25-11-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Sí, no son fáciles, pero tampoco son imposibles. Para mi, una expresión regular es de sólo-escritura, las puedes escribir conforme las vas creando pero cuesta trabajo leerlas.

Yo, para validar emails uso esta:

Código:
/^[A-Z0-9_-]+(\.[A-Z0-9_-]+)*@[A-Z0-9_-]+(\.[A-Z0-9_-]+)*\.[A-Z]{2,3}$/i
Para irla entendiendo, omito las diagonales invertidas \ que sirven para escapar:

Código:
/^[A-Z0-9_-]+(.[A-Z0-9_-]+)*@[A-Z0-9_-]+(.[A-Z0-9_-]+)*.[A-Z]{2,3}$/i
Las diagonales / sólo delimitan la expresión y lo que va después es un modificador global, en este caso i que significa case insensitive. El caret ^ significa que debe coincidir con el principio de la cadena y el $ que debe coincidir con el final.

Luego vas separando las partes:

1.
Código:
Uno o más de los caracteres dentro de los corchetes
(letras, números, guiones bajos y medios):

[A-Z0-9_-]+(.[A-Z0-9_-]+)*@[A-Z0-9_-]+(.[A-Z0-9_-]+)*.[A-Z]{2,3}
2.
Código:
0 o más veces lo que está entre paréntesis
(un punto seguido de uno o más letras, números o guiones):

[A-Z0-9_-]+(.[A-Z0-9_-]+)*@[A-Z0-9_-]+(.[A-Z0-9_-]+)*.[A-Z]{2,3}
3.
Código:
La arroba @

[A-Z0-9_-]+(.[A-Z0-9_-]+)*@[A-Z0-9_-]+(.[A-Z0-9_-]+)*.[A-Z]{2,3}
4.
Código:
Uno o más de letras, números o guiones (como en 1.)

[A-Z0-9_-]+(.[A-Z0-9_-]+)*@[A-Z0-9_-]+(.[A-Z0-9_-]+)*.[A-Z]{2,3}
5.
Código:
Igual que en 2.

[A-Z0-9_-]+(.[A-Z0-9_-]+)*@[A-Z0-9_-]+(.[A-Z0-9_-]+)*.[A-Z]{2,3}
6.
Código:
Un punto seguido de 2 o tres letras:

[A-Z0-9_-]+(.[A-Z0-9_-]+)*@[A-Z0-9_-]+(.[A-Z0-9_-]+)*.[A-Z]{2,3}
En términos más humanos: si entendemos por un identificador válido cualquier cosa que tenga letras, números o guiones, éste lo representamos en la expresión regular por [A-Z0-9_-]+. Entonces, conceptualmente hablando, la expresión regular es:

Antes de la arroba: uno o más identificadores separados por puntos
Después de la arroba: uno o más identificadores separados por puntos y dos o tres letras separadas del resto por un punto (o sea, el .com, .org, .mx, etc.)

Y, de hecho, es de esta representación conceptual de donde parte uno y de ahí vas construyendo la expresión.

Lo que uno tiene que tener en cuenta es:
  1. Hay muchas formas de construir una expresión regular para un fin específico.
  2. Por tanto, nadie puede decir ÉSTA es la buena.
  3. No siempre es necesario abarcar todos y cada uno de los casos.

Por ejemplo, la expresión regular que uso, seguramente fallará en algunos casos, pero me ha funcionado sin problemas hasta ahora y a lo sumo tendré un usuario cada dos años que me diga: oye tu sistema no acepta mi correo. Nadie abarca todos los casos. Ni siquiera GMail (que es de donde basé mi expresión). Por ejemplo, ¿sabían que el RFC del email incluye comentarios ? Estoy seguro que nadie valida eso .

También es cierto que hay expresiones más complejas que incluye las referencias hacia atrás y hacia adelante pero las va uno entendiendo conforme escribes la expresión.

El manual de PHP explica muy claramente el uso de expresiones PCRE, que son las más comunes y puede aplicarse a otros ámbitos como Delphi.

LineComment Saludos
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error: too much mail from (dirección ip) enviando correo masivo Gregorio Cíber Internet 2 10-07-2015 13:43:48
Como Saber si una Dirección de Correo es Válida???? AGAG4 Internet 30 19-07-2011 18:36:48
Pueden Ver Mi Direccion De Correo? CITHALI ACERMA Seguridad 12 18-06-2006 22:49:15
El correo que mando a una direccion de hotmail no llega bien URBANO Internet 1 27-04-2005 07:53:49
Ejecutar cliente de correo pasandole la direccion del destinatario Durbed API de Windows 1 19-10-2004 12:34:00


La franja horaria es GMT +2. Ahora son las 21:36:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi