Javascript 根据正则表达式搜索并替换子字符串

Javascript 根据正则表达式搜索并替换子字符串,javascript,Javascript,我有一个类似这样的字符串: var str = 'Foo faa {{as56asdjhw76234564}} {{ehksfd1238548dsah}}' 我需要用一些子字符串替换大括号之间的文本,这将导致如下结果: Foo faa {{Question 1}} {{Question 22}} 但是,我的问题是如何搜索这个子字符串?大括号内只能有数字和字母。使用带有regex的方法匹配模式并替换 var str='Foo-faa{{as56asdjhw76234564}{{{ehksfd

我有一个类似这样的字符串:

var str = 'Foo faa {{as56asdjhw76234564}} {{ehksfd1238548dsah}}'
我需要用一些子字符串替换大括号之间的文本,这将导致如下结果:

Foo faa {{Question 1}} {{Question 22}}
但是,我的问题是如何搜索这个子字符串?大括号内只能有数字和字母。

使用带有regex的方法匹配模式并替换

var str='Foo-faa{{as56asdjhw76234564}{{{ehksfd1238548dsah}}},
代表=[1,22],
i=0;
console.log(
str.replace(/{{[a-z0-9]+}}}/ig,function(){
返回“{Question'+rep[i++]+'}”
})

)
尝试以下正则表达式:

\{{2}([a-zA-Z0-9]+)\}{2}
然后可以使用带有回调参数的
replace
方法,如:

let questionIndex = 0;
myString.replace(/\{{2}([a-z0-9]+)\}{2}/gmi, 
  function (fullExpression, matchedGroup1) {
    // NOTE fullExpression is {{abc} for example
    //      matchedGroup1 is the 'abc' itself

    questionIndex++;

    return `{{Question ${questionIndex}}}`;
  }
);
请参见下面的示例:

另外,对于Regexp,有一个名为Regex101的有用工具,在需要匹配特定字符串时非常有用:


你被困在哪里?为了匹配
{{something}
,可以使用格式为
/{{something}/
的regexp。如果某物是字母数字字符序列,您可以编写
[a-z0-9]+
,或者
\w+
,如果您不介意包含下划线的话。要使regexp不区分大小写,并且是全局的,可以添加标志
ig
。要替换regexp,请使用
String#replace
。这只是基础的regexp写作,在任何开始的regexp教程中都会涉及到。也许是次要的一点,但他不想要问题1和问题2,他想要问题1和问题22,其中问题1和22可能来自替换问题编号的列表。还有,为什么使用
m
标志?@torazaburo:为了获得尽可能小的匹配。。。否则,
{{as56asdjhw76234564}{{ehksfd1238548dsah}}
将得到匹配,请检查此处否,它不会匹配,因为中间的字符不匹配
[a-z0-9]
@torazaburo:oops,您是,,,最初的正则表达式是
/{.+?}/
。。。。。。现在更新,谢谢:)