Même si cette expression rationnelle considère que la plupart des adresses du monde réel sont valides, elle contient encore beaucoup de faux positifs et de faux négatifs. Par exemple, consultez des exemples d'adresses e-mail valides et invalides sur Wikipédia.
Arseny
1
@Umingo [email protected] est toujours un e-mail valide, cependant, il pourrait toujours être écrit de meilleure façon. Aucune partie du domaine ne peut commencer par un autre caractère que [a-z0-9] (insensible à la casse). De plus, les e-mails (et domaines) valides ont une limite de len, qui n'est pas non plus testée.
Tomis
10
Avec de nouveaux domaines de premier niveau de devenir cette regex plus commune peut avoir besoin de modifier .systems et .poker etc sont tous valides TLDs maintenant , mais échoueraient le contrôle regex
Liath
3
Selon le commentaire de Theo sur une autre réponse, vous devriez changer var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;pour var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,6})+$/;prendre en charge les nouveaux TLD comme .museum, etc.
Ira Herman
165
Fonction jQuery pour valider l'e-mail
Je n'aime vraiment pas utiliser de plugins, surtout lorsque mon formulaire n'a qu'un seul champ à valider. J'utilise cette fonction et l'appelle chaque fois que j'ai besoin de valider un champ de formulaire de courrier électronique.
function validateEmail($email){var emailReg =/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;return emailReg.test( $email );}
et maintenant utiliser cela
if(!validateEmail(emailaddress)){/* do stuff here */}
Juste pour info, cela renvoie vrai pour une adresse e-mail vide. par exemple emailReg.text("")true. Je ferais simplement la fonction jusqu'à la déclaration de la variable emailReg puis ceci:return ( $email.length > 0 && emailReg.test($email))
Diziet
14
Le regex pour vérifier la validité de l'adresse e-mail est obsolète car nous avons maintenant des extensions de nom de domaine avec 6 caractères comme .museum, vous devriez donc passer var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;àvar emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,6})?$/;
Theo
3
vous avez raison @ h.coates! Je suis venu sur ce sujet en espérant trouver que jQuery avait en fait une validation de messagerie intégrée. Avancez, ce ne sont pas les droïdes que vous recherchez ...
iGanja
3
@ Le point de Theo est vital, mais la longueur réelle du TLD devrait être supérieure à 6, la limite supérieure théorique pour l'extension est de 63 caractères. actuellement le plus long est supérieur à 20 voir data.iana.org/TLD/tlds-alpha-by-domain.txt
Vous avez validé, ok super, maintenant quoi? Vous devez afficher l'erreur, gérer l'effacer lorsqu'elle est valide, afficher le nombre total d'erreurs peut-être? Il y a beaucoup de choses qu'il peut gérer pour vous, pas besoin de réinventer la roue.
En outre, un autre avantage énorme est qu'il est hébergé sur un CDN, la version actuelle au moment de cette réponse peut être trouvée ici: http://www.asp.net/ajaxLibrary/CDNjQueryValidate16.ashx Cela signifie des temps de chargement plus rapides pour le client.
Ok ... pas besoin de réinventer la roue. Mais pourquoi dois-je installer des dizaines de Koctets de Javascript pour valider un champ. C'est comme construire une usine automobile si tout ce dont vous avez besoin est une nouvelle roue :)
kraftb
3
@kraftb Comme indiqué dans ma réponse, c'est la gestion et l'affichage autour de la validation, pas seulement la validation du texte lui-même.
Nick Craver
5
Merci pour ce @NickCraver: Cela semble vraiment être une approche de «meilleure pratique» pour le problème de la gestion de la validation d'un e-mail. Ce n'est certainement pas comme construire une usine (écrire les bibliothèques pour faire tout le travail) pour obtenir une roue. C'est comme suivre les instructions de l'usine pour installer la roue sur un véhicule moderne (soulever la voiture, placer la roue - mettre les écrous de roue) au lieu d'essayer de comprendre comment obtenir une roue de wagon sur votre voiture. Ce plugin est super simple à utiliser. Pour effectuer la validation du formulaire, il s'agit littéralement d'une inclusion, de quelques annotations et d'un seul appel de méthode.
jfgrissom
3
Vous réinventez maintenant la métaphore «réinventer la roue»!
Dom Vinyard
Pour les personnes bloquées travaillant sur des applications de formulaires
Web
38
Regardez http: //bassistance.de/jquery-plugins/jquery-plugin-validation/ . C'est un joli plugin jQuery, qui permet de construire un système de validation puissant pour les formulaires. Il y a quelques exemples utiles ici . Ainsi, la validation du champ e-mail dans le formulaire ressemblera à ceci:
mais le format accepté est x@x(c'est bizarre) il doit [email protected]Comment puis-je résoudre ce problème?
Basheer AL-MOMANI
2
@ BasheerAL-MOMANI [ jqueryvalidation.org/jQuery.validator.methods/]$.validator.methods.email = function( value, element ) { return this.optional( element ) || //^.+@.+\..+$/.test( value ); }
Bill Gillingham
17
<scripttype="text/javascript">
$(document).ready(function(){
$('.form_error').hide();
$('#submit').click(function(){var name = $('#name').val();var email = $('#email').val();var phone = $('#phone').val();var message = $('#message').val();if(name==''){
$('#name').next().show();returnfalse;}if(email==''){
$('#email').next().show();returnfalse;}if(IsEmail(email)==false){
$('#invalid_email').show();returnfalse;}if(phone==''){
$('#phone').next().show();returnfalse;}if(message==''){
$('#message').next().show();returnfalse;}//ajax call php page
$.post("send.php", $("#contactform").serialize(),function(response){
$('#contactform').fadeOut('slow',function(){
$('#success').html(response);
$('#success').fadeIn('slow');});});returnfalse;});});functionIsEmail(email){var regex =/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if(!regex.test(email)){returnfalse;}else{returntrue;}}</script><formaction=""method="post"id="contactform"><tableclass="contact-table"><tr><td><labelfor="name">Name :</label></td><tdclass="name"><inputname="name"id="name"type="text"placeholder="Please enter your name"class="contact-input"><spanclass="form_error">Please enter your name</span></td></tr><tr><td><labelfor="email">Email :</label></td><tdclass="email"><inputname="email"id="email"type="text"placeholder="Please enter your email"class="contact-input"><spanclass="form_error">Please enter your email</span><spanclass="form_error"id="invalid_email">This email is not valid</span></td></tr><tr><td><labelfor="phone">Phone :</label></td><tdclass="phone"><inputname="phone"id="phone"type="text"placeholder="Please enter your phone"class="contact-input"><spanclass="form_error">Please enter your phone</span></td></tr><tr><td><labelfor="message">Message :</label></td><tdclass="message"><textareaname="message"id="message"class="contact-input"></textarea><spanclass="form_error">Please enter your message</span></td></tr><tr><td></td><td><inputtype="submit"class="contactform-buttons"id="submit"value="Send"/><inputtype="reset"class="contactform-buttons"id=""value="Clear"/></td></tr></table></form><divid="success"style="color:red;"></div>
<!-- Dont forget to include the jQuery library here --><scripttype="text/javascript"src="jquery-1.3.2.min.js"></script><scripttype="text/javascript">
$(document).ready(function(){
$("#validate").keyup(function(){var email = $("#validate").val();if(email !=0){if(isValidEmailAddress(email)){
$("#validEmail").css({"background-image":"url('validYes.png')"});}else{
$("#validEmail").css({"background-image":"url('validNo.png')"});}}else{
$("#validEmail").css({"background-image":"none"});}});});function isValidEmailAddress(emailAddress){var pattern =newRegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);return pattern.test(emailAddress);}</script><style>#validEmail
{margin-top:4px;margin-left:9px;position: absolute;width:16px;height:16px;}.text
{font-family: Arial, Tahoma, Helvetica;}</style><title>Live Email Validation with jQuery Demo</title></head><body><divclass="text"><h1>Reynoldsftw.com - Live Email Validation</h1><h2>Type in an email address in the box below:</h2></div><div><inputtype="text"id="validate"width="30"><spanid="validEmail"></span></div><divclass="text"><P>More script and css style
Pourquoi? Verimail prend en charge les éléments suivants:
Validation de la syntaxe (selon RFC 822)
Validation du TLD IANA
Suggestion d'orthographe pour les TLD et les domaines de messagerie les plus courants
Refuser les domaines de compte de messagerie temporaires tels que mailinator.com
Ainsi, en plus de la validation, Verimail.js vous donne également des suggestions. Donc, si vous tapez un e-mail avec le mauvais TLD ou domaine qui est très similaire à un domaine de messagerie courant (hotmail.com, gmail.com, etc.), il peut le détecter et suggérer une correction.
L'élément message est un élément dans lequel un message sera affiché. Il peut s'agir de "Votre e-mail n'est pas valide" à "Vouliez-vous dire ...?".
Si vous avez un formulaire et que vous souhaitez le restreindre afin qu'il ne puisse être soumis que si l'e-mail est valide, vous pouvez vérifier l'état à l'aide de la fonction getVerimailStatus comme indiqué ci-dessous:
Cette fonction retourne un code d'état entier selon l'objet Comfirm.AlphaMail.Verimail.Status. Mais la règle générale est que tous les codes inférieurs à 0 sont des codes indiquant des erreurs.
.getVerimailStatus()ne renvoie pas de codes d'état numériques, juste une valeur de chaîne de success, errorou éventuellement pending(n'a pas vérifié le dernier).
Si vous l'utilisez dans la page ASP.NET MVC Razor, n'oubliez pas d'échapper le @personnage avec un autre @personnage. Comme ça @@, sinon vous obtiendrez une erreur de construction.
Rosdi Kasim
11
Une solution très simple consiste à utiliser la validation html5:
Cela effectue une validation plus approfondie, par exemple, il vérifie les points successifs dans le nom d'utilisateur tels que john..doe @ example.com
function isValidEmail(email){return/^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email)&&/^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email);}
Mais les points successifs sont-ils réellement invalides? Au contraire, je pense que vous excluriez les adresses e-mail valides en faisant cela.
icktoofay
9
Comme d'autres l'ont mentionné, vous pouvez utiliser une expression régulière pour vérifier si l'adresse e-mail correspond à un modèle. Mais vous pouvez toujours avoir des e-mails qui correspondent au modèle, mais je peux toujours rebondir ou être de faux e-mails de spam.
vérification avec une expression régulière
var regex =/^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;return regex.test(email);
vérification avec une véritable API de validation d'email
Vous pouvez utiliser une API qui vérifiera si l'adresse e-mail est réelle et actuellement active.
var emailAddress ="[email protected]"
response = $.get("https://isitarealemail.com/api/email/validate?email="+
emailAddress,function responseHandler(data){if(data.status ==='valid'){// the email is valid and the mail box is active}else{// the email is incorrect or unable to be tested.}})
Si vous avez un formulaire de base, indiquez simplement le type d'entrée de l'e-mail:
<input type="email" required>
Cela fonctionnera pour les navigateurs qui utilisent des attributs HTML5 et vous n'avez même pas besoin de JS. L'utilisation de la validation par e-mail même avec certains des scripts ci-dessus ne fera pas grand-chose car:
etc ... Valideront tous comme de "vrais" emails. Il vaudrait donc mieux s’assurer que l’utilisateur doit entrer son adresse e-mail deux fois pour s’assurer qu’il en a bien la même. Mais garantir que l’adresse e-mail est réelle serait très difficile mais très intéressant de voir s’il y avait un façon. Mais si vous vous assurez qu'il s'agit bien d'un e-mail, respectez l'entrée HTML5.
La méthode regexp empêche généralement les e-mails clairement stupides comme un @ bc (que votre exemple JSFiddle lié permet d'utiliser le dernier Chrome), donc la solution HTML5 est clairement une solution inadéquate.
SnowInferno
cool. Alors, que diriez-vous d'utiliser la correspondance de modèle comme HTML5 est "censée" le faire? Pourquoi n'essayez-vous pas cela dans votre Chromebook: jsfiddle.net/du676/8
isaac weathers
8
Validation des e-mails Javascript dans MVC / ASP.NET
Le problème que j'ai rencontré lors de l'utilisation de la réponse de Fabian, est de l'implémenter dans une vue MVC en raison du @symbole Razor . Vous devez inclure un @symbole supplémentaire pour y échapper, comme ceci:@@
Pour éviter le rasoir dans MVC
function isEmail(email){var regex =/^([a-zA-Z0-9_.+-])+\@@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;return regex.test(email);}
Je ne l'ai pas vu ailleurs sur cette page, j'ai donc pensé que cela pourrait être utile.
ÉDITER
Voici un lien de Microsoft décrivant son utilisation.
Je viens de tester le code ci-dessus et j'ai obtenu les js suivants:
function validateEmail(email){var regex =/^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;return regex.test(email);}
@nbrogi Que voulez-vous dire que cela ne fonctionne pas? Je viens de vérifier cela à nouveau et cela produit le js suivant var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; Qu'arrive-t-il à votre code?
Trevor Nestman
Désolé, je ne suis pas sûr pour le moment, je l'ai complètement changé.
nkkollaw
Faites-le moi savoir quand vous le pourrez. S'il s'agit de mauvaises informations, je les retire. J'essaie de fournir des informations utiles lorsque cela est possible et cela m'a aidé lors de l'écriture d'une expression régulière dans une vue MVC.
Trevor Nestman
Encore une fois, j'aimerais savoir pourquoi cela a été rejeté. Il fait exactement ce que je veux, c'est-à-dire produire le @symbole dans une expression régulière .cshtml. Normalement, il essaierait de tout traiter après le @symbole comme un code de rasoir, mais le double l' @@empêche.
Trevor Nestman
le problème principal que je vois est dans le deuxième bloc de code, votre expression régulière est définie sur une variable nommée regex, mais la deuxième ligne utilise une variable nommée re
phlare
7
function isValidEmail(emailText){var pattern =newRegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);return pattern.test(emailText);};
Utilisez comme ceci:
if(!isValidEmail(myEmail)){/* do things if myEmail is valid. */}
function validateEmail(emailaddress){var emailReg =/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;if(!emailReg.test(emailaddress)){
alert("Please enter valid email id");}}
Le bug est dans Jquery Validation Validation Plugin Valide uniquement avec @ pour changer cela
changer le code en ceci
email:function(value, element ){// From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29// Retrieved 2014-01-14// If you have a problem with this implementation, report a bug against the above spec// Or use custom methods to implement your own email validationreturnthis.optional( element )||/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(value);}
Pour ceux qui veulent utiliser un meilleur maintenable solution que les correspondances RegEx perturbatrices de longue durée, j'ai écrit quelques lignes de code. Ceux qui veulent économiser des octets, respectez la variante RegEx :)
Cela restreint:
Pas de @ dans la chaîne
Aucun point dans la chaîne
Plus de 2 points après @
Mauvais caractères dans le nom d'utilisateur (avant @)
Plus de 2 @ en chaîne
Mauvais caractères dans le domaine
Mauvais caractères dans le sous-domaine
Mauvais caractères dans le TLD
TLD - adresses
Quoi qu'il en soit, il est toujours possible de passer à travers, alors assurez-vous de combiner cela avec une validation côté serveur + une vérification du lien e-mail.
Vous pouvez utiliser jQuery Validation et, sur une seule ligne HTML, vous pouvez valider l'e-mail et le message de validation de l'e-mail:type="email" required data-msg-email="Enter a valid email account!"
Vous pouvez utiliser le paramètre data-msg-email pour placer un message personnalisé ou sinon ne pas placer ce paramètre et le message par défaut s'affichera: "Veuillez entrer une adresse e-mail valide."
Exemple complet:
<formclass="cmxform"id="commentForm"method="get"action=""><fieldset><p><labelfor="cemail">E-Mail (required)</label><inputid="cemail"type="email"name="email"requireddata-msg-email="Enter a valid email account!"></p><p><inputclass="submit"type="submit"value="Submit"></p></fieldset></form><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script><scripttype="text/javascript"src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.validate.js"></script><script>
$("#commentForm").validate();</script>
Cette expression régulière empêche les noms de domaine en double comme [email protected], elle n'autorisera que deux fois le domaine comme [email protected]. Il ne permet pas non plus de statring à partir d'un numéro comme [email protected]
J'ai créé une méthode emailCustomFormatqui utilisée regexpour mon format custm vous pouvez la changer pour répondre à vos exigences
jQuery.validator.addMethod("emailCustomFormat",function(value, element){returnthis.optional(element)||/^([\w-\.]+@@([\w-]+\.)+[\w-]{2,4})?$/.test(value);}, abp.localization.localize("FormValidationMessageEmail"));// localized message based on current language
Réponses:
Vous pouvez utiliser l'ancien javascript standard pour cela:
la source
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
pourvar regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,6})+$/;
prendre en charge les nouveaux TLD comme .museum, etc.Fonction jQuery pour valider l'e-mail
Je n'aime vraiment pas utiliser de plugins, surtout lorsque mon formulaire n'a qu'un seul champ à valider. J'utilise cette fonction et l'appelle chaque fois que j'ai besoin de valider un champ de formulaire de courrier électronique.
et maintenant utiliser cela
À votre santé!
la source
emailReg.test($email);
emailReg.text("")
true
. Je ferais simplement la fonction jusqu'à la déclaration de la variable emailReg puis ceci:return ( $email.length > 0 && emailReg.test($email))
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
àvar emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,6})?$/;
J'utiliserais le plugin de validation jQuery pour plusieurs raisons.
Vous avez validé, ok super, maintenant quoi? Vous devez afficher l'erreur, gérer l'effacer lorsqu'elle est valide, afficher le nombre total d'erreurs peut-être? Il y a beaucoup de choses qu'il peut gérer pour vous, pas besoin de réinventer la roue.
En outre, un autre avantage énorme est qu'il est hébergé sur un CDN, la version actuelle au moment de cette réponse peut être trouvée ici: http://www.asp.net/ajaxLibrary/CDNjQueryValidate16.ashx Cela signifie des temps de chargement plus rapides pour le client.
la source
Regardez http: //bassistance.de/jquery-plugins/jquery-plugin-validation/ . C'est un joli plugin jQuery, qui permet de construire un système de validation puissant pour les formulaires. Il y a quelques exemples utiles
ici. Ainsi, la validation du champ e-mail dans le formulaire ressemblera à ceci:Voir la documentation de la méthode de messagerie pour plus de détails et des exemples.
la source
x@x
(c'est bizarre) il doit[email protected]
Comment puis-je résoudre ce problème?$.validator.methods.email = function( value, element ) { return this.optional( element ) || //^.+@.+\..+$/.test( value ); }
la source
: www.htmldrive.net
Source: htmldrive.com
la source
Je recommanderais Verimail.js , il a également un plugin JQuery .
Pourquoi? Verimail prend en charge les éléments suivants:
Ainsi, en plus de la validation, Verimail.js vous donne également des suggestions. Donc, si vous tapez un e-mail avec le mauvais TLD ou domaine qui est très similaire à un domaine de messagerie courant (hotmail.com, gmail.com, etc.), il peut le détecter et suggérer une correction.
Exemples:
Etc..
Pour l'utiliser avec jQuery, incluez simplement verimail.jquery.js sur votre site et exécutez la fonction ci-dessous:
L'élément message est un élément dans lequel un message sera affiché. Il peut s'agir de "Votre e-mail n'est pas valide" à "Vouliez-vous dire ...?".
Si vous avez un formulaire et que vous souhaitez le restreindre afin qu'il ne puisse être soumis que si l'e-mail est valide, vous pouvez vérifier l'état à l'aide de la fonction getVerimailStatus comme indiqué ci-dessous:
Cette fonction retourne un code d'état entier selon l'objet Comfirm.AlphaMail.Verimail.Status. Mais la règle générale est que tous les codes inférieurs à 0 sont des codes indiquant des erreurs.
la source
.getVerimailStatus()
ne renvoie pas de codes d'état numériques, juste une valeur de chaîne desuccess
,error
ou éventuellementpending
(n'a pas vérifié le dernier).cela a été fourni par l'utilisateur Luca Filosofi dans cette réponse cette réponse
la source
@
personnage avec un autre@
personnage. Comme ça@@
, sinon vous obtiendrez une erreur de construction.Une solution très simple consiste à utiliser la validation html5:
http://jsfiddle.net/du676/56/
la source
Cela effectue une validation plus approfondie, par exemple, il vérifie les points successifs dans le nom d'utilisateur tels que john..doe @ example.com
Voir valider l'adresse e-mail à l'aide d'une expression régulière en JavaScript .
la source
Comme d'autres l'ont mentionné, vous pouvez utiliser une expression régulière pour vérifier si l'adresse e-mail correspond à un modèle. Mais vous pouvez toujours avoir des e-mails qui correspondent au modèle, mais je peux toujours rebondir ou être de faux e-mails de spam.
vérification avec une expression régulière
vérification avec une véritable API de validation d'email
Vous pouvez utiliser une API qui vérifiera si l'adresse e-mail est réelle et actuellement active.
Pour plus d'informations, consultez https://isitarealemail.com ou un article de blog
la source
Si vous avez un formulaire de base, indiquez simplement le type d'entrée de l'e-mail:
<input type="email" required>
Cela fonctionnera pour les navigateurs qui utilisent des attributs HTML5 et vous n'avez même pas besoin de JS. L'utilisation de la validation par e-mail même avec certains des scripts ci-dessus ne fera pas grand-chose car:
[email protected] [email protected] [email protected]
etc ... Valideront tous comme de "vrais" emails. Il vaudrait donc mieux s’assurer que l’utilisateur doit entrer son adresse e-mail deux fois pour s’assurer qu’il en a bien la même. Mais garantir que l’adresse e-mail est réelle serait très difficile mais très intéressant de voir s’il y avait un façon. Mais si vous vous assurez qu'il s'agit bien d'un e-mail, respectez l'entrée HTML5.
EXEMPLE DE FIDDLE
Cela fonctionne dans FireFox et Chrome. Cela peut ne pas fonctionner dans Internet Explorer ... Mais Internet Explorer est nul. Alors, il y a ça ...
la source
Validation des e-mails Javascript dans MVC / ASP.NET
Le problème que j'ai rencontré lors de l'utilisation de la réponse de Fabian, est de l'implémenter dans une vue MVC en raison du
@
symbole Razor . Vous devez inclure un@
symbole supplémentaire pour y échapper, comme ceci:@@
Pour éviter le rasoir dans MVC
Je ne l'ai pas vu ailleurs sur cette page, j'ai donc pensé que cela pourrait être utile.
ÉDITER
Voici un lien de Microsoft décrivant son utilisation.
Je viens de tester le code ci-dessus et j'ai obtenu les js suivants:
Qui fait exactement ce qu'il est censé faire.
la source
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
Qu'arrive-t-il à votre code?@
symbole dans une expression régulière.cshtml
. Normalement, il essaierait de tout traiter après le@
symbole comme un code de rasoir, mais le double l'@@
empêche.Utilisez comme ceci:
la source
la source
la source
Débarqué ici ..... fini ici: https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
... qui a fourni l'expression régulière suivante:
... que j'ai trouvé grâce à une note sur le readme du plugin jQuery Validation: https://github.com/jzaefferer/jquery-validation/blob/master/README.md#reporting-an-issue
Ainsi, la version mise à jour de @Fabian de réponse serait la suivante:
J'espère que cela pourra aider
la source
[email protected]
mais aurait aimé que ce soit fauxutilisez ceci
la source
Le bug est dans Jquery Validation Validation Plugin Valide uniquement avec @ pour changer cela
changer le code en ceci
la source
Pour ceux qui veulent utiliser un meilleur maintenable solution que les correspondances RegEx perturbatrices de longue durée, j'ai écrit quelques lignes de code. Ceux qui veulent économiser des octets, respectez la variante RegEx :)
Cela restreint:
Quoi qu'il en soit, il est toujours possible de passer à travers, alors assurez-vous de combiner cela avec une validation côté serveur + une vérification du lien e-mail.
Voici le JSFiddle
la source
Vous pouvez utiliser jQuery Validation et, sur une seule ligne HTML, vous pouvez valider l'e-mail et le message de validation de l'e-mail:
type="email" required data-msg-email="Enter a valid email account!"
Vous pouvez utiliser le paramètre data-msg-email pour placer un message personnalisé ou sinon ne pas placer ce paramètre et le message par défaut s'affichera: "Veuillez entrer une adresse e-mail valide."
Exemple complet:
la source
la source
Référence: JQUERY UI WEBSITE
la source
vous devriez voir ceci: jquery.validate.js , ajoutez-le à votre projet
l'utiliser comme ceci:
la source
Une autre option simple et complète:
la source
Vous pouvez créer votre propre fonction
la source
Une version simplifiée que je viens de faire fait ce dont j'ai besoin. Je l'ai limité à seulement alphanumérique, point, trait de soulignement et @.
Fabriqué avec l'aide des autres
la source
Cette expression régulière empêche les noms de domaine en double comme [email protected], elle n'autorisera que deux fois le domaine comme [email protected]. Il ne permet pas non plus de statring à partir d'un numéro comme [email protected]
Bonne chance !!!!!
la source
Validez les e-mails lors de la frappe, avec la gestion de l'état des boutons.
la source
si vous utilisez la validation jquery
J'ai créé une méthode
emailCustomFormat
qui utiliséeregex
pour mon format custm vous pouvez la changer pour répondre à vos exigencesalors vous pouvez l'utiliser comme ça
ce regex accepte
[email protected]
,[email protected]
Mais pasabc@abc
,[email protected]
,[email protected]
j'espère que cela vous aide
la source