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

dam*_*mon 1 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);
};
Run Code Online (Sandbox Code Playgroud)

Gum*_*mbo 7

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

/^[a-zA-Z0-9._\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,4}$/
Run Code Online (Sandbox Code Playgroud)

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

以下是一些有效的示例:

/[-xyz]/    // "-", "x", "y", "z"
/[xyz-]/    // the same as above
/[-]/       // "-"
/[a-z-]/    // "a"-"z", "-"
/[a-b-c]/   // "a"-"b", "-", "c"
Run Code Online (Sandbox Code Playgroud)