我在所有版本的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 ));
}
我怀疑错误是因为在资源管理器中它从正则表达式中删除了第一个“/”。
答案 0 :(得分:1)
请从"i"
var rePattern = new RegExp( pattern, "i" );
实际上,您应该将字符串传递给regexen的构造函数,或者使用正则表达式文字语法,但不能同时使用这两种语法。
var pattern = /^\d{10}$/i
或
var pattern = new RegExp("^\d{10}$","i")
请参阅此处 - https://stackoverflow.com/questions/16721057/ie8-is-not-recognizing-my-regular-expression