我有这个字符串dfdfd dsfsdfsdfsdf {{random.number}} dsfdsfsdfsdf {{bla}}
和简单的代码,用来替换给定字符串中的任何{{...}}
:
const b = template.replace(/\{{(.*)\}}/g, 'aaaa');
但没有任何事情发生template.replace
只是不起作用,但正则表达式似乎匹配所有{{}}
有什么想法?
更新
刚才意识到我的输入字符串错了。现在我已经使用了我的原始正则表达式。不过感谢@ Robo-Robok,我现在了解了greedy
正则表达式,并将使用他的正则表达式。
答案 0 :(得分:2)
默认情况下,正则表达式是贪婪的。您的.*
尽可能多地吃,包括第一个}}
对。
请改为尝试:
const b = template.replace(/\{\{.*?\}\}/g, 'aaaa');
*
之后的问号,?
使比赛变得非贪婪。
还有两件事: