因此,我正在搜索 {x} 的字符串,其中 x 是 1-9 之间的某个数字,我的正则表达式找到第一个匹配项并运行回调函数,但这仅在第一个找到的实例上调用。例如,{2}Some{3}String 将返回替换值 x 次,具体取决于括号之间的整数,因此该函数返回 Some{3}
当我希望它返回 Some String
时。
我不太了解正则表达式,但是我是否需要添加一些内容才能在所有匹配的事件上执行回调函数?
这是代码
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); }
最佳答案
使用这个RegExp
文字来代替:
var regExp = /{[1-9]}/g;
{
或 }
不是正则表达式
中的特殊符号,因此您可以避免斜杠。 RegExp 的 g
标志意味着全局匹配
,否则你只会替换第一个匹配项,而不是所有匹配项。首选使用 literal
而不是 RegExp constructor
,因为它更快。此外,如果您使用 RegExp 构造函数,您还需要转义 \
符号,因为斜杠是字符串文字
中的特殊符号。考虑一下:
var regliteral = /\./;
//Similar with constructor
var regconstructor = new RegExp('\\.'); //slash is special symbol in string,so we add extra slash before it
关于javascript - 正则表达式回调函数只执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11368331/