web-dev-qa-db-fra.com

Validateur de courrier électronique ASP.NET regex

Est-ce que quelqu'un sait ce qu'est la regex utilisée par le validateur de courrier électronique dans ASP.NET?

40
JamesBrownIsDead

Voici la regex pour le Adresse e-mail Internet en utilisant le RegularExpressionValidator in .NET

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

En passant, si vous placez un RegularExpressionValidator sur la page et que vous accédez à la vue Conception, il existe un champ ValidationExpression que vous pouvez utiliser pour choisir une liste d'expressions fournies par .NET. Une fois que vous avez choisi l'expression que vous voulez, il y a un Expression de validation: zone de texte contenant la regex utilisée pour le validateur

94
Josh Mein

Je ne valide plus le format de l'adresse électronique (ok, je vérifie qu'il y a bien un signe avant et un autre temps après). La raison en est que ce que dit l'adresse correctement formatée est même leur email? Vous devriez leur envoyer un email et leur demander de cliquer sur un lien ou de vérifier un code. C'est le seul moyen réel de valider qu'une adresse email est valide et qu'une personne est réellement capable de recevoir des emails. 

24
Bob

Les adresses e-mail sont très difficiles à vérifier correctement avec une simple regex. Ici est une regex effrayante pretty supposément implémentée/ RFC822, chapitre 6 , spécification d'adresses de messagerie valides.

Pas vraiment une réponse, mais peut-être liée à ce que vous essayez d'accomplir.

17
Thomas

Nous pouvons utiliser RegularExpressionValidator pour valider le format de l'adresse de messagerie. Vous devez spécifier l'expression régulière dans la propriété ValidationExpression de RegularExpressionValidator. Alors ça va ressembler 

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

En outre, dans le gestionnaire d'événements de bouton ou de lien, vous devez vérifier! Page.IsValid . Vérifier l'exemple de code ici: exemple de code

De même, si vous ne souhaitez pas utiliser RegularExpressionValidator, vous pouvez écrire une méthode validate simple et dans cette méthode, utilisez la classe RegEx de l'espace de noms System.Text.RegularExpressions.

Exemple de contrôle:

Exemple

12
Avinash

Pour regex, je regarde d’abord ce site Web: RegExLib.com

4
joerage

Outre la validation côté client avec un validateur, je vous recommande également de procéder à la validation côté serveur.

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

C'est la meilleure expression pour valider une adresse email: 

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

Nous pouvons utiliser cette expression sur un RegularExpressionValidator pour valider le format d'adresse de messagerie:

<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}))$" />
0
Ali