javascript - RegEx javascript 不正确匹配

标签 javascript regex

我有一个小的 javascript 函数:

function GetFilteredListLimited(event) {
    var $source = $(event.target);
    var $Pattern = event.data.Pattern;
    var RE = new RegExp($Pattern, 'i');
    if (RE.test($source.val())) {
        console.log('RegEx match');
    }
};

使用的模式是:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

应该匹配大多数电子邮件地址。

使用 http://regexpal.com/我可以看到模式是正确的。但是由于某些奇怪的原因,脚本已经在 @

之后的第 4 个字符匹配

abc@abcd 不应该匹配,但确实匹配。 有什么建议吗?

最佳答案

您需要注意 RegExp 构造函数,其中转义字符必须进行两次转义。因此,传递给 RegExp 构造函数的正则表达式字符串应如下所示:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$

可以这样引入修复:

var RE = new RegExp($Pattern.replace(/\\/g, '\\\\'), 'i');

如果一致使用转义符号,它将起作用。

关于javascript - RegEx javascript 不正确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258203/

相关文章:

javascript - Gulp Watch 不工作

javascript - 在 React 的文本区域中使用什么代替 window.getLocation()?

php 正则表达式从文件名中提取电话号码

c语言正则表达式匹配字符串的多个部分

Ruby 条件正则表达式变通方法

javascript - UPPY : How to get json data returned from failed upload

javascript - 按钮禁用时使用单击事件

javascript - 在 Three.js 中,如何在相机方向上将对象直接移离相机?

java - 使用 Regex 迭代 XML 文本

c# - 用于匹配多种日期格式的正则表达式