您好我正在尝试使用正则表达式验证电子邮件。这是我的代码:
<input type="text" name="email" id="email"/>
var email = $("input#email"),
re = /^[A-Za-z0-9][a-zA-Z0-9._-][A-Za-z0-9]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
if(re.test(email.val())){
alert("email valid");
}else{
alert("email not valid");
}
无论我在文本字段中输入什么,它都说电子邮件无效。问题是什么?
答案 0 :(得分:2)
试试工作演示 = http://jsfiddle.net/buezz/
希望这有助于您的事业:)
随意玩耍。
良好的链接:http://jquerybyexample.blogspot.com/2011/04/validate-email-address-using-jquery.html
<强>码强>
function validateEmail(sEmail) {
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(sEmail)) {
return true;
}
else {
return false;
}
}
$(document).ready(function() {
$('#btnValidate').click(function() {
var sEmail = $('#txtEmail').val();
if ($.trim(sEmail).length == 0) {
alert('Please enter valid email address');
e.preventDefault();
}
if (validateEmail(sEmail)) {
alert('Email is valid');
}
else {
alert('Invalid Email Address');
e.preventDefault();
}
});
});
答案 1 :(得分:2)
我刚刚回答了类似的问题:https://stackoverflow.com/a/12674524/340736
我对你的建议是,不要试图让你自己。你可能做错了。尝试遵循标准,例如RFC 822.自己做起来并不容易,但有些库可以做到这一点。
一个例子是Verimail.js。它遵循RFC 822,但也根据IANA注册的TLD完整列表进行TLD验证。
使用起来也很简单:
var email = "cool@fabeook.cmo";
var verimail = new Comfirm.AlphaMail.Verimail();
verimail.verify(email, function(status, message, suggestion){
if(status < 0){
// Incorrect syntax!
}else{
// Syntax looks great!
}
});
上面的示例将出现“语法错误!”一行因为TLD'cmo'无效。除此之外,它还会提示您可以返回给您的用户,在这种情况下,建议变量将包含'cool@facebook.com',因为'fabeook.cmo'看起来很像'facebook.com'。< / p>
希望这有帮助!
答案 2 :(得分:1)
我用
function is_email(a){return /^([\w!.%+\-])+@([\w\-])+(?:\.[\w\-]+)+$/.test(a);}
我的电子邮件验证;我记得它刚才是facebook的注册页面。
你只需要这样做:
if (!is_email($('#email').val()) {
alert('invalid email and all that');
}
答案 3 :(得分:1)
你正在使用一个非常奇怪的正则表达式。
看看这个:
[A-Za-z0-9][a-zA-Z0-9._-][A-Za-z0-9]
这将匹配1个字母数字字母,然后是字母数字字母或./_/-,然后是1个或多个字母数字字母。
试试www.regular-expressions.info中的这个正则表达式,我编辑了一下。
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9]{2,4}$/