在带有正则表达式的所有版本的Internet Explorer中,我都有一个问题。我收到错误“正则表达式语法无效”。它在包括Microsoft Edge在内的所有其他浏览器中都可以正常工作。在IE中进行调试时,我注意到它从正则表达式的开头删除了“ /”。为什么这样做呢?

var pattern = /^\d{10}$/;

function isPattern(input, pattern) {
    if (typeof pattern === "string") {
        pattern = "^" + pattern + "$";
    }
    var rePattern = new RegExp( pattern, "i" );
    return (typeof input === "string" && rePattern.test( input ));
}


我怀疑该错误是因为在资源管理器中它从正则表达式中删除了第一个“ /”。

最佳答案

请从"i"中删除​​var rePattern = new RegExp( pattern, "i" );

实际上,您应该将字符串传递给regexen的构造函数,或者使用regex文字语法,但不能同时使用两者。

var pattern = /^\d{10}$/i


要么

var pattern = new RegExp("^\d{10}$","i")


在这里参考-https://stackoverflow.com/questions/16721057/ie8-is-not-recognizing-my-regular-expression

09-25 19:54