Je suppose que cela dépend de ce que vous faites avec cette validation d'email, mais je l'ai fait pendant des années dans les validateurs en ligne ASP.NET regex pour l'entrée de formulaire.
Pendant quelques mois, j'ai pensé que j'avais une expression régulière assez cool pour m'en occuper. Je l'ai trouvé en ligne et il semblait être populaire. Cependant, à plusieurs reprises, je reçois un appel d'un client essayant de remplir l'application où la validation du formulaire n'a pas aimé leur adresse e-mail. Et qui sait combien de personnes ont eu le même problème mais n'ont pas appelé.
J'ai appris la leçon à la dure, qu'il vaut mieux errer du côté de la gourmandise que d'essayer d'être trop strict. En d'autres termes, comme il y a tellement de règles pour définir ce qui rend une adresse e-mail valide (et invalide), je définis simplement une expression rationnelle libre pour couvrir toutes mes bases. Il peut également correspondre à certaines adresses e-mail non valides, mais à mes fins, ce n'est pas aussi important. D'ailleurs, très honnêtement - la plupart du temps si l'utilisateur est en train de bousiller son adresse email, il va y avoir une faute d'orthographe que regex ne va pas attraper de toute façon.
Alors, voici ce que j'utilise maintenant:
^[^<>\s\@]+(\@[\w\-]+(\.[\w\-]+)+)$
Et voici un exemple de travail pour tester ceci:
http://regexhero.net/tester/?id=b90d359f-0dda-4b2a-a9b7-286fc513cf40
Cela ne répond pas à votre principale préoccupation car cela correspond toujours consécutive points, tirets, etc Et je ne peux toujours pas prétendre que cela correspondra chaque adresse email valide parce que je ne sais pas honnêtement. Mais je peux dire que je l'utilise depuis 3 ans avec plus de 25 000 utilisateurs et pas une seule plainte.
Qu'est-ce qu'un "caractère sauvage" dans ce contexte? Je n'ai pas vu ça avant, assez confus. – unwind