所以我在搜索{x}的字符串,其中x是1-9之间的某个数字,我的regexp找到第一个出现并运行回调函数,但这只在第一个找到的实例上调用。例如,{2}某些{3} String将返回替换值x次,具体取决于括号之间的整数,因此当我希望它返回		Some{3}
时函数返回		Some			String
。
我不太了解regexp,但是我需要添加一些内容才能在所有匹配的事件上执行回调函数吗?
这是代码
var string = "{2}Some{3}String";
function replaceWithTabs(propertyName) {
var regExp = new RegExp('\{[1-9]\}');
function addTabs(match) {
var string = '',
i = 0,
length = match.substring(1,2);
for(i; i < length; i++) {
string += "	";
}
return string;
} return propertyName.replace(regExp, addTabs); }
答案 0 :(得分:3)
请改用此RegExp
字面值:
var regExp = /{[1-9]}/g;
{
或}
不是Regular Expression
中的特殊符号,因此您可以避免斜线。 RegExp的g
标志表示global match
,没有它,您只会替换第一个匹配,但不会替换所有匹配。首选使用literal
而不是RegExp contstructor
,因为它更快。如果使用RegExp构造函数,还需要转义\
符号,因为斜杠是string literal
中的特殊符号。考虑一下:
var regliteral = /\./;
//Similar with constructor
var regconstructor = new RegExp('\\.'); //slash is special symbol in string,so we add extra slash before it