2011-07-19 10 views
5

estoy usando esta expresión para validar direcciones de correo electrónico:¿La parte local de una dirección de correo electrónico tiene un requisito de longitud mínima?

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

me di cuenta de que para que la dirección de correo electrónico para validar, tengo que poner en por lo menos 3 caracteres antes del símbolo @ . ¿Es esto un requisito? ¿Qué sucede si solo quiero tener una dirección de correo electrónico con 1 o 2 caracteres antes del símbolo @?

+0

Lo encontré aquí. No estoy seguro de cómo cambiarlo para permitir un mínimo de 1 carácter. – Xaisoft

+0

¿dónde encontraste esto en SO? Este REGEX que proporciona es incorrecto, por muchas razones. – Brad

+0

MS Outlook no le impide usar 'a @ b.com'. –

Respuesta

8

Es completamente posible tener una dirección de correo electrónico con solo un carácter. Todas las directrices que se definen en RFC822: http://www.ietf.org/rfc/rfc0822.txt?number=822

la expresión regular es necesario: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html

+0

¿Cómo cambiaría mi expresión regular para reflejar eso? – Xaisoft

+0

Ver mi última edición. Es demasiado largo para publicarlo todo aquí. – Brad

+0

Sí, esa expresión regular es demasiado larga. El que tengo está bien, solo quiero permitir un mínimo de 1 carácter antes del @. – Xaisoft

-2

que siguió adelante y decidió usar éste:

"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"

Se me permite entrar en 1 o más personajes para la parte local.

+0

Una explicación de por qué esto fue downvoted sería agradable. Este es uno que encontré aquí, creo que es de la información de expresiones regulares. – Xaisoft

+0

Su expresión regular resuelve su problema, pero es de muy mala calidad. – VMAtm

+0

¿A qué te refieres con calidad en este caso? Si es porque no coincide con ciertas direcciones, no definiría eso como calidad. Diría que es más un aspecto cuantitativo. La expresión regular que estoy buscando no necesita validar todas las direcciones posibles en el mundo. Si solo tuviera un símbolo @, estaría bien. – Xaisoft

1

Su expresión regular es mala. Realmente deberías cambiarlo. Incluso Microsoft ofrece variante más flexible:

"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$" 

sí, es mucho tiempo. Pero debe escribir buenos programas, no programas desarrollados rápidamente.

+0

VMAtm, entiendo tu punto, pero debes darte cuenta de que acabo de encontrar la expresión regular en línea y le di una oportunidad. Nunca me comprometí con eso. – Xaisoft

+0

Definitivamente debería escribir programas desarrollados rápidamente –

Cuestiones relacionadas