如何在这个正则表达式中转义字符?

时间:2010-09-23 18:31:35

标签: javascript regex jslint

我有此功能可以验证电子邮件地址。 jsLint在正则表达式中给出了一个错误,抱怨某些字符是未转义的。

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

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

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:1)

我没有立即看到需要转义的内容。您可能想为正则表达式尝试/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i。我刚刚把它加了一点,并将+%添加到第一个字段。