使用正则表达式获取双花括号内的值

时间:2018-03-14 14:37:45

标签: javascript regex

从这个字符串:

dfasd {{test}} asdhfj {{te{st2}} asdfasd {{te}st3}}

我想获得以下子字符串:

test, te{st2, te}st3

换句话说,我希望将所有内容保持在双花括号中,包括单花括号

我不能使用这种模式:

{{(.*)}}

因为它匹配第一个{{和last}}之间的整个事物:

test}} asdhfj {{te{st2}} asdfasd {{te}st3

我设法用这个正则表达式模式获得前两个:

{{([^}]*)}}

有没有办法让所有三个使用正则表达式?

2 个答案:

答案 0 :(得分:4)

尝试{{(.*?)}}

.*?表示进行懒惰/非贪婪搜索=>只要}}匹配,它将捕获找到的文本并停止查找。否则它将进行贪婪搜索,因此从第一个{{并以最后一个结束}}开始。

答案 1 :(得分:2)

这不是那么漂亮,但是它没有使用RegEx并且清楚地说明了你要完成的任务。

const testString = 'dfasd {{test}} asdhfj {{te{st2}} asdfasd {{te}st3}}';

const getInsideDoubleCurly = (str) => str.split('{{')
  .filter(val => val.includes('}}'))
  .map(val => val.substring(0, val.indexOf('}}')));

console.log(getInsideDoubleCurly(testString));