我有一个正则表达式数组,目前只有一个元素的长度,以及一个我想通过遍历数组来搜索/替换的字符串:
var str = "i am*happy all the*time",
rex = [
/(\S)\s*\*\s*(\S)/g
],
i = 0,
r = rex.length;
这就是我目前试图实现这一目标的方式:
for (i; i < r; i += 1) {
str.replace(rex[i], function(star, p1, p2) {
console.log(i, star, p1, p2);
return p1 + '\\s*(.*)\\s*' + p2;
});
}
结果应该是i am*\\s*(.*)\\s*happy all the\\s*(.*)\\s*time
。但目前,str
似乎没有受到影响,即使当我检查控制台时,相关的匹配项也在进行中。您可以在此处亲自查看。
那么我是否遗漏了一些简单的东西,我是否误解了在 String.replace() 中使用 lambda 表达式的一些东西,或者这里有什么更根本的错误?
...
额外信息: 我现在正在使用 Chrome 24,以防万一;不久前我读到 String.replace() 中的匿名函数并非对所有浏览器都可用,尽管我认为现在可以解决(该选项是在 ECMAScript v3 中引入的)。