像小胡子一样的正则表达式javascript,但单独留下单个

时间:2016-01-15 12:13:33

标签: javascript regex

所以,此时我一直在使用这个正则表达式:/{{\s?([^}}]*)\s?}}/g

一切顺利,直到我面对{{ } }}

我怎样才能使上述正则表达式适应这种情况呢?

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用unroll-the-loop technique

/{{\s*([^}]*(?:}(?!})[^}]*)*)}}/g

请参阅regex demo

它基本上与/{{\s*([^]*?)}}/g相同,但效率更高。

正则表达式解释:

  • {{ - 两个文字{{
  • \s* - 零个或多个空格(为了#34;左边裁剪"子匹配)
  • ([^}]*(?:}(?!})[^}]*)*) - 捕获组1匹配零个或多个序列...
    • [^}]* - 除}以外的零个或多个字符,后跟零个或多个序列...
      • }(?!}) - 文字}后面没有}
      • [^}]* - 除}
      • 以外的零个或多个字符
  • }} - 两个文字}