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

时间:2016-05-31 11:37:38

标签: javascript

我有一个像这样的字符串:

var str = 'Foo faa {{as56asdjhw76234564}} {{ehksfd1238548dsah}}'

我需要用一些子字符串替换大括号之间的文本,这会导致类似:

Foo faa {{Question 1}} {{Question 22}}

但是,我的问题是如何搜索这个子字符串?在大括号内,只能有数字和字母。

2 个答案:

答案 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的有用工具,当你需要匹配一个特定字符串时非常有用:

https://regex101.com/r/sK7qZ0/2