使用jQuery和正则表达式验证电子邮件地址
我不太确定如何做到这一点。我需要使用正则表达式验证电子邮件地址,像这样的东西:使用jQuery和正则表达式验证电子邮件地址
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)
然后,我需要在jQuery的功能是这样运行的:
$j("#fld_emailaddress").live('change',function() {
var emailaddress = $j("#fld_emailaddress").val();
// validation here?
if(emailaddress){}
// end validation
$j.ajax({
type: "POST",
url: "../ff-admin/ff-register/ff-user-check.php",
data: "fld_emailaddress="+ emailaddress,
success: function(msg)
{
if(msg == 'OK') {
$j("#fld_username").attr('disabled',false);
$j("#fld_password").attr('disabled',false);
$j("#cmd_register_submit").attr('disabled',false);
$j("#fld_emailaddress").removeClass('object_error'); // if necessary
$j("#fld_emailaddress").addClass("object_ok");
$j('#email_ac').html(' <img src="img/cool.png" align="absmiddle"> <font color="Green"> Your email <strong>'+ emailaddress+'</strong> is OK.</font> ');
} else {
$j("#fld_username").attr('disabled',true);
$j("#fld_password").attr('disabled',true);
$j("#cmd_register_submit").attr('disabled',true);
$j("#fld_emailaddress").removeClass('object_ok'); // if necessary
$j("#fld_emailaddress").addClass("object_error");
$j('#email_ac').html(msg);
}
}
});
});
哪里验证去,什么是表达?
- http://so.devilmaycode.it/jquery-validate-e-mail-address-regex/
- 使用新的正则表达式
- 添加Address tags支持(+号)
function isValidEmailAddress(emailAddress) {
var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\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]))*(([ \t]*\r\n)?[ \t]+)?")@(([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(emailAddress);
}
if(!isValidEmailAddress(emailaddress)) { /* do stuff here */ }
- 注:keep in mind that no 100% regex查邮件的存在!
这是我的解决方案:
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^[+a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i);
// alert(pattern.test(emailAddress));
return pattern.test(emailAddress);
};
研究发现,正则表达式在这里:
http://mdskinner.com/code/email-regex-and-validation-jquery
你对加号的看法是有效的,但你的正则表达式不如我在我的例子中使用的正则表达式更好。 ps:我已经更新了我的正则表达式来支持加号。 – 2011-10-21 21:18:11
很酷,谢谢:) – 2012-01-14 17:30:05
大多数时候你只是想验证用户以正确的格式输入了电子邮件。识别类似“2”而不是“@”的拼写错误。所以我喜欢这个比原来的答案更好,但是aSeptik的答案是全面的,我也投了赞成票。 – darwindeeds 2012-07-18 18:22:59
我们还可以使用正则表达式(/^([\w.-]+)@ ([\ w - ] +)((。(\ w){2,3})+)$/i)来验证电子邮件地址格式是否正确。
var emailRegex = new RegExp(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i);
var valid = emailRegex.test(emailAddress);
if (!valid) {
alert("Invalid e-mail address");
return false;
} else
return true;
我会建议你使用the jQuery plugin的Verimail.js。
为什么?
- IANA TLD验证
- 语法验证(根据RFC 822)为最常见的TLD和电子邮件域
- 拼写建议
- 拒绝临时电子邮件帐户域,如mailinator.com
怎么样?
纳入您的网站verimail.jquery.js和使用功能:
$("input#email-address").verimail({
messageElement: "p#status-message"
});
如果你有一个表单,并要验证上提交的电子邮件,您可以使用getVerimailStatus功能:
if($("input#email-address").getVerimailStatus() < 0){
// Invalid email
}else{
// Valid email
}
Verimail不断验证keyup,这意味着,只要你开始输入,你会得到一个错误消息。通常很棒的插件,但这是一个交易断路器 - 我宁愿只在手动触发时进行验证,即在单击提交按钮或离开字段之前进行验证。 – 2015-09-15 17:27:07
洛尔兹好得多
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/);
return pattern.test(emailAddress);
};
$(document).ready(function() {
$('#emailid').focusout(function(){
$('#emailid').filter(function(){
var emil=$('#emailid').val();
var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/;
if(!emailReg.test(emil)) {
alert('Please enter valid email');
} else {
alert('Thank you for your valid email');
}
})
});
});
其实这是有帮助的。标题说JQuery,这是目前唯一的答案,有一个体面的jQuery的例子。 – 2014-06-03 14:39:54
的Javascript:
var pattern = new RegExp("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
var result = pattern .test(str);
正则表达式是不允许的:
[email protected]
[email protected]
允许使用的:
[email protected]
[email protected]
来源:http://www.mkyong.com/regular-expressions/10-java-regular-expression-examples-you-should-know/
试试这个
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
return pattern.test(emailAddress);
};
您可以使用此功能
var validateEmail = function (email) {
var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\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]))*(([ \t]*\r\n)?[ \t]+)?")@(([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;
if (pattern.test(email)) {
return true;
}
else {
return false;
}
};
参见http://stackoverflow.com/a/15659649/292060 – goodeye 2013-12-27 22:53:38