正则表达式回调函数只执行一次

regex callback function only executes once

本文关键字:一次 执行 回调 函数 正则表达式      更新时间:2023-09-26

所以我正在搜索 {x} 的字符串,其中 x 是 1-9 之间的某个数字,我的正则表达式找到第一个出现并运行回调函数,但这仅在第一个找到的实例上调用。例如,{2}Some{3}String 将返回替换值 x 次,具体取决于括号之间的整数,因此当我希望它返回		Some			String时,函数会返回		Some{3}

我不知道很多正则表达式,但是我需要添加一些东西才能在所有匹配的实例上执行回调函数?

这是代码

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 += "&#09;";
    }
    return string;  
}  return propertyName.replace(regExp, addTabs);  }

改用这个RegExp文字:

var regExp = /{[1-9]}/g;

{}不是Regular Expression的特殊符号,因此您可以避免斜杠。 正则表达式g标志表示global match,否则您只会替换第一个匹配项,而不是所有匹配项。最好使用 literal 而不是RegExp contstructor,因为它更快。另外,如果使用正则表达式构造函数,则还需要转义'符号,因为斜杠是string literal中的特殊符号。考虑一下:

var regliteral = /'./;
//Similar with constructor
var regconstructor = new RegExp('''.');  //slash is special symbol in string,so we add extra slash before it