我不知道为什么我的正则表达式不正确:
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_-.])+@