我不知道为什么我的正则表达式不正确:
var domain = "google\.com\.br";
var reEmail = new RegExp("^([A-Za-z0-9_\-\.])+\@" + domain + "$");
我需要这个来验证电子邮件。下面的例子:reEmail.test("contact@google.com.br");
我收到此错误:
字符类中的范围乱序
我不知道为什么我的正则表达式不正确:
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 + "$");
这样\\就成为\字符串中的 a ,然后用于转义-RegExp 中的 。
编辑:
如果您通过字符串创建 RegExp,那么记录结果总是很有帮助的,这样您就可以查看您是否做对了所有事情:
例如,您在 RegExp 中的一部分
console.log("^([A-Za-z0-9_\-\.])+\@");
结果是:
^([A-Za-z0-9_-.])+@