RegEx javascript无法正确匹配

时间:2015-05-15 11:19:44

标签: javascript regex

我有一个小的javascript funtcion:

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不应该给出匹配,但确实如此。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

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

可以像这样引入修复:

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

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