我有一个像这样的字符串:
var str = 'Foo faa {{as56asdjhw76234564}} {{ehksfd1238548dsah}}'
我需要用一些子字符串替换大括号之间的文本,这会导致类似:
Foo faa {{Question 1}} {{Question 22}}
但是,我的问题是如何搜索这个子字符串?在大括号内,只能有数字和字母。
答案 0 :(得分:2)
使用带正则表达式replace()
的 /{{[a-z0-9]+}}/ig
方法匹配模式并替换。
var str = 'Foo faa {{as56asdjhw76234564}} {{ehksfd1238548dsah}}',
rep = [1, 22],
i = 0;
console.log(
str.replace(/{{[a-z0-9]+}}/ig, function() {
return '{{Question ' + rep[i++] + '}}'
})
)
答案 1 :(得分:0)
尝试以下正则表达式:
\{{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}}}`;
}
);
请参阅以下示例:
https://jsfiddle.net/xb3q63y9/
另外,对于Regexp,有一个名为Regex101的有用工具,当你需要匹配一个特定字符串时非常有用: