Javascript regex回调函数只执行一次

Javascript regex回调函数只执行一次,javascript,regex,callback,Javascript,Regex,Callback,因此,我正在搜索一个字符串{x},其中x是介于1-9之间的某个数字,我的regexp找到第一个匹配项并运行回调函数,但这只在第一个找到的实例上调用。例如,{2}一些{3}字符串将根据括号之间的整数返回替换值x的次数,因此函数返回 一些{3}当我希望它返回 一些 字符串 我对regexp不太了解,但是我是否需要添加一些东西,以便在所有匹配的事件上执行回调函数 这是密码 var string = "{2}Some{3}String"; fu

因此,我正在搜索一个字符串{x},其中x是介于1-9之间的某个数字,我的regexp找到第一个匹配项并运行回调函数,但这只在第一个找到的实例上调用。例如,{2}一些{3}字符串将根据括号之间的整数返回替换值x的次数,因此函数返回
		一些{3}
当我希望它返回
		一些			字符串

我对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 += "&#09;";
    }
    return string;  
}  return propertyName.replace(regExp, addTabs);  }
var string=“{2}一些{3}字符串”;
函数replaceWithTabs(propertyName){
var regExp=newregexp('\{[1-9]\}');
函数addTabs(匹配){
变量字符串=“”,
i=0,
长度=匹配子串(1,2);
对于(i;i
改用这个
RegExp
文本:

var regExp = /{[1-9]}/g;
{
}
不是
正则表达式中的特殊符号,因此可以避免使用斜杠
g
RegExp的标志意味着
全局匹配
,否则您将只替换第一个匹配,而不是所有匹配。首选使用
literal
而不是
RegExp-contstructor
,因为它更快。此外,如果使用RegExp构造函数,还需要转义
\
符号,因为斜杠是
字符串literal
中的特殊符号。考虑这一点:

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

@工程师再次感谢你的提示。我肯定需要花一些时间来学习更多关于正则表达式的知识。我同意,但当您需要以友好的方式构建模式时,它应该会起作用,但在这里,即使设置global=true,也只会替换一次。我通常使用//g表单,但我现在想用DINAMICAL方式构建模式?您没有设置全局标志。使用RegExp对象时,需要第二个参数“g”:RegExp(“\{[1-9]\}”,“g”);