Comment faire correspondre une liste séparée par des virgules des e-mails avec des regex?
Pour tenter de valider un séparées par des virgules liste d'email dans la zone de texte avec asp:RegularExpressionValidator
, voir ci-dessous:
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server" ErrorMessage="Wrong email format (separate multiple email by comma [,])" ControlToValidate="txtEscalationEmail"
Display="Dynamic" ValidationExpression="([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},?)" ValidationGroup="vgEscalation"></asp:RegularExpressionValidator>
Il fonctionne très bien quand je l'ai tester à http://regexhero.net/tester/, mais il ne fonctionne pas sur ma page.
Voici mon exemple d'entrée:
test@test.com,test1@test.com
J'ai essayé une suggestion dans ce post, mais ne pouvais pas le faire fonctionner.
p.s. Je ne veux pas d'une discussion sur le bon e-mail de validation
Pourrais-tu montrer le code qui ajoute la regex pour le validateur?
Regex Héros retourne deux matches avec l'original de votre expression régulière. Beignet de solution donne qu'un match (comme il se doit). Je suppose que cela signifie que le RegularExpressionValidator uniques correspondant comportement en fonction de ce qui justifie un match. Peut-être deux side-by-side correspond à cela ne justifie pas un match. Il ne devrait pas être difficile à trouver.
Regex Héros retourne deux matches avec l'original de votre expression régulière. Beignet de solution donne qu'un match (comme il se doit). Je suppose que cela signifie que le RegularExpressionValidator uniques correspondant comportement en fonction de ce qui justifie un match. Peut-être deux side-by-side correspond à cela ne justifie pas un match. Il ne devrait pas être difficile à trouver.
OriginalL'auteur roman m | 2010-12-10
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
L'ajout de la
+
après les parenthèses signifie que le groupe qui précède peut être présent 1 fois ou plus.L'ajout de la
^
et$
signifie que quoi que ce soit entre le début de la chaîne et le début du match (ou de la fin du match et la fin de la chaîne) provoque la validation échoue.btw, savez-vous pourquoi il fonctionne sans le "+" dans la ligne du programme de validation?
Cette expression serait également correspondre à des courriels qui n'ont pas de virgule entre les deux: "[email protected],[email protected]@test.com". D'où cette regex ne fonctionne pas.
Nope. Ne fonctionne pas. Permet [email protected]@domain.com
Cette expression ne couvre pas tous les nouveaux Tld génériques comme .sport, .voyage, .musée et des dizaines d'autres.
OriginalL'auteur Donut
Cette Regex permettra aux e-mails avec des espaces après les virgules.
Jouer avec cela, un collègue est venu avec cette RegEx c'est plus précis. La réponse ci-dessus semble laisser passer une adresse e-mail de la liste dont le premier élément n'est pas une adresse e-mail. Voici la mise à jour qui permet également d'espaces après les virgules.
Ce ne sera pas permettre à
[email protected]
.Pour permettre de longues extensions de nom de domaine, l'utilisation
^[\W]*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]+[\W]*,{1}[\W]*)*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]+)[\W]*$
où j'ai simplement remplacer les {2,4} restriction avec un +Peut confirmer @mithun_daa constatation qu'il permet des virgules ou des caractères spéciaux à la fin.
OriginalL'auteur Matt
Cela fonctionnera également. C'est un peu plus strict sur les e-mails, et ne veut pas qu'il y ait plus d'une adresse e-mail saisie ou une virgule être présent à tous.
Comment puis-je changer cela?
OriginalL'auteur Stan
La première réponse qui est sélectionné comme meilleure correspond à la chaîne comme
[email protected]@abc.com
qui n'est pas valide.La suite de la regex va travailler pour séparés par des virgules email id de manière impressionante.
Il correspondra à la seule emailId, séparés par des virgules emailId mais pas si la virgule est raté.
Premier groupe sera le match de la chaîne d'unique emailId. Le deuxième groupe est éventuellement requis par '*' token c'est à dire 0 ou plus nombre de ce groupe, mais', " doit être au début de ces emailId qui rend séparées par des virgules emailId pour correspondre à la regex.
OriginalL'auteur Laxmi Prasad
L'expression régulière ci-dessous est moins restrictive et plus approprié pour la validation d'une saisie manuellement liste séparée par des virgules des adresses de courriel. Il permet adjacentes des virgules.
OriginalL'auteur Rieekan
Utiliser la regex suivante, il permettra de résoudre votre problème. La suite de regex sera divertir post et pré espaces avec virgule trop
-.-.-.-...@....... ,
je ne suis pas sûr que c'est une adresse email valideOriginalL'auteur Hisham Javed
Je suis un peu en retard à la fête, je sais, mais j'ai pensé que je voudrais ajouter mon grain de sel, puisque l'on a accepté la réponse a le problème de l'adaptation des adresses e-mail uns à côté des autres, sans une virgule.
Mon projet de regex est-ce:
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}(,[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})*$
Il est semblable à la accepté de répondre, mais résout le problème dont je parlais. La solution je suis venu avec était qu'au lieu de rechercher "une adresse e-mail, suivie par une option de virgule" une ou plusieurs fois, qui est ce que l'on a accepté la réponse ne, cette regex recherches pour "une adresse e-mail, suivie par une option de virgule préfixe de l'adresse email de n'importe quel nombre de fois".
Qui résout le problème par le groupement de la virgule avec l'adresse e-mail, et de l'ensemble du groupe en option, au lieu de la virgule.
Notes:
Cette expression est destiné à être utilisé avec le insensible indicateur activé.
Vous pouvez utiliser n'importe quelle expression régulière pour rechercher une adresse e-mail vous s'il vous plaît, j'ai juste utilisé celle que j'utilise déjà. Vous serait-il suffit de remplacer chaque
[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}
avec le regex que vous souhaitez utiliser.OriginalL'auteur
La solution qui fonctionne pour moi est la suivante
OriginalL'auteur Jorge Santos Neill
La solution la plus simple serait de la forme suivante. Cela va correspondre à la chaîne avec une liste séparée par des virgules. Utiliser la regex suivante dans votre code.
Regex: '[^,]+,?'
OriginalL'auteur Deep
Suivantes RegEx fonctionne même avec certains de la plus bizarre des e-mails, et qu'il prend en charge une virgule entre les e-mails.
Quelques Exemples:
Espère que Cette aide.
OriginalL'auteur vinay
D'une simple modification de @Beignet de réponse permet adjacentes des virgules, tous les Tld de deux caractères ou plus, et l'arbitraire de l'espace entre les adresses de courriel et les virgules.
Vous aurez besoin de diviser et de supprimer les espaces et les cordes à vide de votre côté, mais ce devrait être une meilleure expérience utilisateur.
Exemples de correspondance listes:
OriginalL'auteur Duncan Dean