我能改进这个“正则表达式”吗?

时间:2017-05-01 18:12:37

标签: javascript regex

我有以下字符串:

mv

我想删除const myString = '"{{ some text here }}"' 之前和{{之后的引号。我能做到:

}}

但是我想知道是否有更好的方法来实现这一点而不需要两次调用替换?

有没有人可以告诉我是否有更好的方法和解释?

http://jsbin.com/xafovamihi/edit?js,console

3 个答案:

答案 0 :(得分:2)

您可以将正则表达式与交替组一起使用,您可以将{{}}分别捕获到第1组和第2组中,并仅替换为后向引用:

var myString = '"{{ some text here }}"';
console.log(myString.replace(/"({{)|(}})"/g, '$1$2'))

<强>详情:

  • "({{) - 匹配"并将{{捕获到第1组
  • | - 或
  • (}})" - 将}}捕获到第2组并匹配"

由于替换后向引用在引用未参与匹配的组时,使用空字符串进行初始化,因此$1$2替换将始终正常工作。

全局修饰符/g将确保替换所有匹配项。

答案 1 :(得分:1)

一种简单的方法是使用正则表达式OR将两个模式组合成一个匹配,这样就得到/"{{|}}"/g

答案 2 :(得分:0)

为什么不使用正则表达式查找{{ }}以及之间的任何文字?

const myString = '"{{ some text here }}"',
      reg = /{{.*?}}/;
console.log(myString.match(reg)[0]);