当字符串包含方括号时,RegEx会中断

时间:2014-05-28 15:49:30

标签: javascript regex mustache

我一直在使用此正则表达式来提取已删除的{{Hello}}内容:

/{{\s*[\w\.]+\s*}}/g

当胡须字符串包含方括号时,它会掉下来。我一直在摆弄它多年无济于事,是否有人建议调整意味着它会匹配{{Hello [0]}}?

1 个答案:

答案 0 :(得分:4)

我的哈克贝利:

\{\{(.*?)\}\}

我总是使用优秀的http://www.regexr.com/

来解决这些问题

所以,解释为什么这适用于这种情况:

  1. 首先,考虑\{\{ - 我们逃避(通过'转义'使用反斜杠,下一个字符不会被表达式评估,例如它只是查找该字符)我们正在寻找的第一个角色(大括号)。
  2. 然后我们重复这个以获得第二个大括号。
  3. 接下来,我们打开一个括号(来制作一个'组'捕获多个令牌 - 所以我们可以抓住大括号内的所有内容。
  4. .匹配除换行符之外的任何字符。
  5. *匹配前面标记的零个或多个(在这种情况下,除了换行符之外的任何标记)
  6. ?使之前的量词“懒惰”#39因为它会尽可能少地匹配。
  7. 然后我们关闭论坛)
  8. 最后,我们结束了另外两个转义字符\}\}