我不知道为什么我的正则表达式不正确:

var domain = "google\.com\.br";
var reEmail = new RegExp("^([A-Za-z0-9_\-\.])+\@" + domain + "$");

我需要这个来验证电子邮件。下面的示例:reEmail.test("contact@google.com.br");
我收到此错误:

字符类中的范围困惑

最佳答案

由于使用字符串创建RegExp,因此_\-\.变为_-.,这是无效范围。
(范围从_.,这是不正确的)

您需要对其进行两次转义:

new RegExp("^([A-Za-z0-9_\\-\\.])+@" + domain + "$");

这样,\\在字符串中成为\,然后用于在RegExp中转义-

编辑:

如果您通过String创建RegExp,则记录结果总是有帮助的,以便查看您是否做对了所有事情:

例如您的RegExp部分

console.log("^([A-Za-z0-9_\-\.])+\@");

结果是:

^([A-Za-z0-9_-.])+@

关于javascript - javascript中字符类出现乱序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17727884/

10-11 22:26
查看更多