【问题标题】:RegEx breaking when string contains square brackets字符串包含方括号时正则表达式中断
【发布时间】:2014-05-28 15:49:30
【问题描述】:

我一直在使用这个正则表达式来提取带有胡须的 {{Hello}} 内容:

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

当胡须字符串包含方括号时,它会掉下来。我一直在摆弄它,但无济于事,任何人都可以建议进行调整以匹配 {{Hello[0]}} 吗?

【问题讨论】:

标签: javascript regex mustache


【解决方案1】:

我是你的哈克贝利:

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

我总是使用出色的 http://www.regexr.com/ 来解决这些问题

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

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

【讨论】:

  • 甚至:\{\{([^}]+)\}\},它不依赖惰性匹配,但不适用于{{Foo}Bar}}
  • 如果可以,请简要说明这是如何解决问题的?给男人一条鱼... yadda yadda。
  • @GigaWatt - 刚刚按要求添加了详细信息。
猜你喜欢
  • 1970-01-01
  • 2011-04-11
  • 2021-11-24
相关资源
最近更新 更多