我不知道为什么我的正则表达式不正确:
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/