繁体   English   中英

未捕获的SyntaxError:Chrome,FF和IE中的正则表达式无效

[英]Uncaught SyntaxError: Invalid regular expression in Chrome, FF and IE fine

这行代码:

if ( new RegExp("\\b" + arrCategorySort[i]+ "\\b", "g").test(titleText) )
{
    catFound = true;
}

在Firefox(6.0)和IE(7.0)中都能完美运行,但在Chrome(13.0.782.112)中却不能

你知道为什么吗?

尝试/捕获代码,并显示引起异常的值:

try {
    if ( new RegExp("\\b" + arrCategorySort[i]+ "\\b", "g").test(titleText) )
        catFound = true;
}
catch (e) {
    confirm (e + ' : at index ' + i + ', category is "' + arrCategorySort[i] + '"');  
}

问题是,就RegExp解析器而言,您的arrCategorySort[i]作为字符串包含特殊字符(例如{}[] )。 将字符串放在适当的位置,您正在尝试解析正则表达式

 /\bfunction (a,b){var c=b||window,d=[];for(var e=0,f=this.length;e<f;++e){if(!a.call(c,this[e],e,this))continue;d.push(this[e])‌​}return d}\b/

(a,b)开头之后,在{}您有var ...但是{}表示重复的模式,期望它们之间有一个数字(或两个数字)。 您真正需要的是转义所有特殊字符: {}[]|()\\,.*+ -通过在每个字符前面加上'\\'字符。 (可能还有更多,此刻使我逃脱了。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM