JavaScript的正则表达式无效
问题描述:
我有下面的代码:JavaScript的正则表达式无效
$.each(css, function(i, v) {
css[i] = this.replace('{bind}', bindName, css[i]);
});
我要全部更换{}绑定的与bindName的价值。 为了试试这个,我给了bindName值'Test'。
'css'是一个简单的数据对象。
var css = {
tabs : 'tab-{bind}',
outerWrapper : 'outerWrapper-{bind}',
innerWrapper : 'innerWrapper-{bind}-{id}-{tab}',
subMenue : 'subMenue-{bind}-{id}',
subMenueItem : 'subMenue-Item'
};
在Firefox中我得到线错误 “无效的正则表达式标志K” 68 68号线:
$.each(css, function(i, v) {
css[i] = this.replace('{bind}', bindName, css[i]); // LINE 68
});
如果有必要,这是我更换funcion:
this.replace = function (s, r, su) {
return su.split(s).join(r);
}
Google-Chrome中没有错误,但在Firefox(最新版本)中 - 您能找到错误吗?
答
更改此:
css[i] = this.replace('{bind}', bindName, css[i]);
到任何这些:
css[i] = this.replace('{bind}', bindName);
css[i] = v.replace('{bind}', bindName);
css[i] = css[i].replace('{bind}', bindName);
的原因的错误消息是在Firefox,String.replace
接受表示正则表达式标志可选的第三个参数(例如'i'
或'g'
);您传递的参数为css[i]
,Firefox将其解释为包含无效标志。 Chrome 不支持给出错误消息的原因是它不支持该非标准功能,因此完全忽略该参数。
答
我不太确定,但也许你的问题是“{”字符在正则表达式语言中是特殊的。 试图逃脱它:
css[i] = this.replace('\{bind\}', bindName, css[i]);
它工作,如果你是包装成$(this)? – 2012-03-20 16:43:13
不这么认为 - 我可以尝试,但我认为它一定是这个 - 这些功能是一个类的方法,所以我不认为我必须做$ this() - 但我已经用另一种方式尝试过了 - 而且全局函数只是一个变量,这也不起作用。 – TJR 2012-03-20 16:45:24