我有此功能可以验证电子邮件地址。 jsLint在正则表达式中给出了一个错误,抱怨某些字符是未转义的。
有没有办法正确逃脱它们?
var validateEmail = function(elementValue){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
return emailPattern.test(elementValue);
};
答案 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
。我刚刚把它加了一点,并将+
和%
添加到第一个字段。