我有this JavaScript 上的正则表达式:
var myString="<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e5848484a5848484cb868a88" rel="noreferrer noopener nofollow">[email protected]</a>";
var mailValidator = new RegExp("\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
if (!mailValidator.test(myString))
{
alert("incorrect");
}
但它不应该用 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4c2d2d2d0c2d2d2d622f2321" rel="noreferrer noopener nofollow">[email protected]</a>
来警告“不正确” 。
它应该为 aaaaaa.com
返回“不正确”相反(作为示例)。
我哪里错了?
最佳答案
当您从字符串创建正则表达式时,您必须考虑到解析器将在字符串有机会被解析为正则表达式之前从字符串中删除反斜杠。
因此,当 RegExp()
构造函数开始工作时,所有 \w
标记都已更改为字符串常量中的普通“w” 。您可以将反斜杠加倍,以便字符串解析只留下一个,或者您也可以使用 native 正则表达式常量语法。
关于javascript - 为什么这个特定的正则表达式在 JavaScript 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9020261/