1

我有这个功能可以验证电子邮件地址。jsLint 使用正则表达式给出错误,抱怨某些字符未转义。

有没有办法正确逃避它们?

var validateEmail = function(elementValue){
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    return emailPattern.test(elementValue);
};
4

2 回答 2

7

您使用的正则表达式有效的。但我猜 JSLint 抱怨-字符类前面缺少转义符号:

/^[a-zA-Z0-9._\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,4}$/

-仅当字符类不在字符类的开头或结尾,或者在两个字符之间使用时不表示范围时,才需要对字符类内部进行转义。

以下是一些有效的示例:

/[-xyz]/    // "-", "x", "y", "z"
/[xyz-]/    // the same as above
/[-]/       // "-"
/[a-z-]/    // "a"-"z", "-"
/[a-b-c]/   // "a"-"b", "-", "c"
于 2010-09-23T18:33:41.627 回答
1

我没有立即看到需要逃避什么。你可能想试试/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i你的正则表达式。我只是把它整理了一下,+然后%在第一个字段中添加了和。

于 2010-09-23T18:40:28.897 回答