jQuery的电子邮件验证正则表达式问题
问题描述:
我目前正在对自己的验证,但我有一个小问题。 我无法使电子邮件验证工作。我尝试了一些不同的表达方式,但无法使其工作。也许我在布局上做错了什么?jQuery的电子邮件验证正则表达式问题
var email = $('.email');
function valemail(){
var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if (filter.test(email)){
return true;
} else {
return false;
}
}
$('#registerform').submit(function() {
if (valemail()) {
return true;
} else {
return false;
}
});
答
试试这个:
function IsEmail(email) {
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
的以下呼叫:
$('#registerform').submit(function(){
if(IsEmail($(this).val())==false){
//do something validation not satisfied
}else{
//do something
}
});
答
当你这样做:
var email = $('.email');
if (filter.test(email)){
email
是一个jQuery对象,而不是字符串用户输入。你需要得到实际的串出输入字段,并使用与您的正则表达式是这样的:
if (filter.test(email.val())){
答
我不会当the jQuery Validate plugin is available写我自己的验证脚本。
但是,你可以简单地看一看在email regex contained within it和使用......
function email(value) {
// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
return /^((([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.test(value);
}
$('#registerform').submit(function() {
var result = email($('#myemailfield').val());
if (result) {
alert('passed'); // <-- your code if passed
} else {
alert('failed'); // <-- your code if failed
}
});
不要做正则表达式电子邮件验证超出了非常基本的'/ [^ @ \ s] + @ [^ @ \ s] + \。[^ @ \ s] + /'检查。一个更复杂的正则表达式会拒绝有效地址,或者太复杂以至于无法维护,两者都无用。把事情简单化。通过尝试在那里发送实际邮件来检查邮件地址。 – Tomalak 2013-02-16 15:56:50
当[此插件可用]时,我不会编写自己的验证脚本(http://docs.jquery.com/Plugins/Validation)。但是,只需查看[包含在其中的电子邮件正则表达式](http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.js)。 – Sparky 2013-02-16 16:14:16