可能重复:
What is the best regular expression for validating email addresses?
大家好,
我有这个正则表达式/代码来验证电子邮件地址:
var testEmail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
if ( testEmail.test(oForm["email"]) == false){
chErrorMessage += "\nValid email address";
bSubmit = false;
}
无论电子邮件格式是否正确,代码似乎都没有正确地进行测试。
我是JavaScript的初学者。任何帮助将不胜感激,谢谢
答案 0 :(得分:2)
我使用jQuery Validation Plugin:http://docs.jquery.com/Plugins/validation
它支持电子邮件地址验证。
答案 1 :(得分:1)
首先,我会以这种方式获取表单的输入对象
document.oForm["email"]
而不是
oForm["email"]
然后,你应该得到输入的值,而不是输入本身:
document.oForm["email"].value
此外,如果结果为true
,而不是false
,则要执行条件代码,因此条件应为:
testEmail.test(document.oForm["email"].value) == true
但是将布尔值与true
或false
进行比较并不是很优雅,因为比较值本身足以用作条件:
if (testEmail.test(document.oForm["email"].value)) {
// ...
}
在这些更改后,您的代码对我有用。 然而,我会使用JQuery的解决方案,因为它会处理你的正则表达式忽略的有关电子邮件的所有无限细节。 OTOH,我希望你能更好地理解正则表达式在JavaScript中是如何工作的。
HTH
答案 2 :(得分:0)
尝试使用此代码: -
/**
* DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
*/
function echeck(str) {
var at="@"
var dot="."
var lat=str.indexOf(at)
var lstr=str.length
var ldot=str.indexOf(dot)
if (str.indexOf(at)==-1){
return false
}
if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
return false
}
if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
return false
}
if (str.indexOf(at,(lat+1))!=-1){
return false
}
if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
return false
}
if (str.indexOf(dot,(lat+2))==-1){
return false
}
if (str.indexOf(" ")!=-1){
return false
}
return true
}
function ValidateForm(){
return echeck(document.oForm["email"].value);
}
最后只需拨打ValidateForm()
,无论您收到什么返回值,都是电子邮件的有效性!
干杯! :d