2

在我的 js 代码中,我正在尝试验证电子邮件地址。

var validateEmail = function () {
    var email = $("email").value;
    var symbol = email.search("@");
    var domain = email.substring(email.indexOf('@')).substr(1);
    var validDomain = domain.search(".");

    if (symbol == -1) {
        alert(email + " is not a valid email address.");
    } else if (validDomain == -1) {
        alert(email + "is not a valid domain name.");
    } else {
        alert(email + " is a valid email address.");
    }

};

我确信有更好的方法来验证电子邮件地址,但我这样做的方式是练习使用 js 属性和方法。学习简单的基础知识。甚至不确定这个例子是否是最佳实践。

问题:

var validDomain = domain.search(".");

不是从字符串中拉出句点。有人可以指出我在这里遇到的问题。

这是 jsfiddle:http: //jsfiddle.net/UDv7q/

4

1 回答 1

3

主要问题是search期望传递正则表达式。如果参数不是一,它会隐式转换为一。.是正则表达式中的特殊字符,因此您需要对其进行转义(您不妨使用正则表达式文字)。

var validDomain = domain.search(/\./);

演示:http: //jsfiddle.net/h4hx5/

请注意,这个简单的验证实际上并不能确保输入是有效的电子邮件。有一个规范定义了有效电子邮件是什么,它比这要复杂得多。但是,如果它对您有用,那就太好了;通常很难完全验证电子邮件:)

参考:

于 2013-07-17T21:20:56.867 回答