JavaScript电子邮件验证无法正常工作,HELP?

时间:2011-04-28 15:59:33

标签: javascript regex

  

可能重复:
  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的初学者。任何帮助将不胜感激,谢谢

3 个答案:

答案 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

但是将布尔值与truefalse进行比较并不是很优雅,因为比较值本身足以用作条件:

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