代码之家  ›  专栏  ›  技术社区  ›  Ky -

为什么这个正则表达式匹配true和false?

  •  0
  • Ky -  · 技术社区  · 11 年前

    我不小心把括号漏掉了

    /true|false/
    

    但它奏效了!据我所知 | 意思是“前面的模式或后面的模式”,所以 e f ,或相当于 /tru(e|f)alse/ 我后来注意到了自己的错误,但很困惑。这不是唯一的匹配吗 truealse trufalse ? 然后我做了更多的测试,发现它与这些匹配, ! 为什么会匹配 true , false , 真阿尔塞 真假的 ?

    小提琴: http://refiddle.com/1bkk

    1 回复  |  直到 11 年前
        1
  •  4
  •   nneonneo    11 年前

    “前面的模式”是 之前的所有内容 | ,在当前组中。所以 true 是前面的模式,并且 false 是后续模式。

    如果你真的只想匹配 trufalse truealse ,你会使用 tru(e|f)alse 围绕 | .

    至于为什么匹配 真阿尔塞 :匹配 真的 因为您没有指定任何锚点。因此,它将匹配具有 真的 假的 在其中。