2009-11-10 23 views
40

¿Alguien sabe cuál es la expresión regular utilizada por el validador de correo electrónico en ASP.NET?Validador de correo electrónico ASP.NET regex

+0

Yo no creo que haya es un control integrado "EmailValidator" que puede usar. Puede hacer su propio uso del RegularExpressionValidator. –

+0

No es una respuesta a la pregunta, pero aquí está la validación simple que uso. '. + @. + \ .. +'. Me atengo a esto porque muchos correos electrónicos no siguen los estándares, pero siguen siendo válidos. – Lijo

Respuesta

85

Aquí es la expresión regular para el de Internet dirección de correo electrónico utilizando elRegularExpressionValidator en .NET

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 

Por cierto si se pone un RegularExpressionValidator en la página y vaya a la vista de diseño que hay es un campo ValidationExpression que puede usar para elegir de una lista de expresiones proporcionada por .NET. Una vez que elija la expresión que desea hay una expresión de validación : cuadro de texto que contiene la expresión regular utilizada para el validador

+2

¿Es así como se hace en el validador de correo electrónico de ASP.NET? Eso coincidiría con '[email protected]_._' ... Esperaba algo más elegante. –

+0

@Bart compruébalo tú mismo. Te dije cómo lo encontré –

+0

Publiqué mi comentario cuando solo publicaste tu expresión regular y nada más, así que no, no me dijiste cómo lo encontraste. Además, ahora que leí el resto de su publicación, yo (al ser alguien sin experiencia .NET y sin medios para probarla) no puedo acceder a la documentación que podría estar tratando de señalar. No importa, estaba un poco sorprendido de que se utilizara una expresión regular tan ingenua. No tengo ningún interés en verificarlo yo mismo. –

15

Las direcciones de correo electrónico son muy difíciles de verificar correctamente con una mera expresión regular. Here es pretty scary regex que supuestamente implementa RFC822, chapter 6, la especificación de direcciones de correo electrónico válidas.

No es realmente una respuesta, pero tal vez se relaciona con lo que está tratando de lograr.

+3

+1 para el enlace regex épico – kd7

+2

Esa expresión regular es pura genialidad –

24

Ya no valido el formato de la dirección de correo electrónico (Ok, compruebo para asegurarse de que hay un signo en y un punto después de eso). La razón de esto es lo que dice que la dirección correctamente formateada es incluso su correo electrónico? Debería enviarles un correo electrónico y pedirles que hagan clic en un enlace o verifiquen un código. Esta es la única manera real de validar que una dirección de correo electrónico sea válida y que una persona pueda realmente recibir correos electrónicos.

+1

¡No podría estar más de acuerdo! +1 –

+17

La validación de la dirección de correo electrónico no impide que el usuario ingrese una dirección que no les pertenece. Su propósito es evitar que los usuarios escriban errores en una dirección por accidente. Entonces, básicamente, lo que estás diciendo es que no puedes evitar que las personas ingresen a tu casa por completo, así que en lugar de cerrar la puerta, simplemente mantenerla cerrada es suficiente. –

+0

Posiblemente podría proporcionar una muestra para la validación simple con '@' y '.' (o consulte http://stackoverflow.com/questions/742451/what-is-the-simplest-regular-expression-to-validate- emails-to-not-accept-them-bl) – Lijo

11

Podemos utilizar RegularExpressionValidator para validar el formato de dirección de correo electrónico. Debe especificar la expresión regular en la propiedad ValidationExpression de RegularExpressionValidator. Por lo tanto, se verá como

<asp:RegularExpressionValidator ID="validateEmail"  
    runat="server" ErrorMessage="Invalid email." 
    ControlToValidate="txtEmail" 
    ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" /> 

También en el controlador de eventos del botón o enlace que necesita comprobar! Page.IsValid. Comprobar código de ejemplo aquí: sample code

Además, si usted no desea utilizar RegularExpressionValidator puede escribir método de validación simple y en ese método usinf clase RegEx de System.Text.RegularExpressions espacio de nombres.

Comprobar ejemplo:

example

+0

-1 para proporcionar una solución que identifique incorrectamente correos electrónicos válidos como malos. Compare su expresión regular con esto: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html Debe agregar una advertencia de que esta solución es demasiado simplista. – oligofren

1

Aparte de la validación del lado del cliente con un validador, también recomiendo hacer la validación del lado del servidor también.

bool isValidEmail(string input) 
{ 
    try 
    { 
     var email = new System.Net.Mail.MailAddress(input); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 
0

Ésta es la mejor expresión para validar Dirección de correo electrónico:

^(?("")("".+?""@)|(([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}))$ 

Podemos utilizar esta expresión en un RegularExpressionValidator para validar formato de dirección de correo electrónico:

<asp:RegularExpressionValidator ID="validateEmail"  
    runat="server" ErrorMessage="Invalid email." 
    ControlToValidate="txtEmail" 
    ValidationExpression="^(?("")("".+?""@)|(([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}))$" /> 
Cuestiones relacionadas