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,您是,,,最初的正则表达式是/{.+?}/
。。。。。。现在更新,谢谢:)