javascript - 为什么这个特定的正则表达式在 JavaScript 中不起作用?

标签 javascript regex

我有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/

相关文章:

javascript - Angular-JWT 授权 header 异常

javascript - Angular .js :12520 TypeError: Cannot read property 'post' of undefined

javascript - 仅显示网站的特定部分 - 通过 CSS 选择?

javascript - PHP 的 imagefill() 问题

c# - 使用正则表达式获取每个反斜杠之间的字符串

php - 如果字符串不是链接,则正则表达式替换字符串中的单词

javascript - 在iframe上绑定(bind)点击事件?

r - 是否有正则表达式可以查找两个正斜杠之间和特定字符串之后的字符串? [R]

javascript - REGEXP js 点不起作用

python - 集合中的正则表达式