为什么这个正则表达式匹配真假?

时间:2014-08-15 21:04:54

标签: regex

我不小心将括号从

中删了
/true|false/

但它有效!据我所知,|表示"前面的模式或后续模式",ef,或等同于/tru(e|f)alse/ 。之后我注意到了我的错误,但感到困惑。这不应该只匹配truealsetrufalse吗?然后我做了更多测试,发现它与那些匹配,为什么匹配truefalsetruealsetrufalse

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

1 个答案:

答案 0 :(得分:4)

“前一个模式”是当前组中| 之前的所有内容。因此,true是前面的模式,false是后续模式。

如果您确实只想匹配trufalsetruealse,则可以使用tru(e|f)alse|周围建立分组。

至于为什么它匹配truealse:它匹配true,因为你没有指定任何锚点。因此,它将匹配其中包含truefalse的任何字符串。