如何在正则表达式中使用“ OR”?

时间:2019-05-12 10:30:58

标签: php regex regex-lookarounds regex-group regex-greedy

我想有一个接受这些形式的正则表达式:

  

23456KW33C3

     

23456KW33

     

23456K

     

23456

     

23456W33C3

     

23456W33

我写了这两个正则表达式

/(?i)^2\d{4}K?(M|(W33)(C3)?)?$/i

/(?i)^2\d{4}K?(M|(W33)|(W33C3))?$/i

他们接受所有形式,但不接受23456KW33C3 !!!

我在if表达式中使用它:

if (preg_match('/(?i)^2\d{4}K?(M|(W33)(C3)?)?$/i' ,$text))

他们怎么了?

1 个答案:

答案 0 :(得分:0)

您的表达式工作正常,您可能只想删除开始和结束字符,它也将传递23456KW33C3

2\d{4}k?(m|(w33)(c3)?)?

This link可帮助您根据需要修改/更新表达式。

enter image description here

我不太确定您要匹配什么。您可能想要简化您的表达并减少它的限制。


如果您希望使用OR编写表达式,this expression将显示您可能希望这样做的方式:

2\d{4}(k|)|(m|w33)|(c3)

您可以将它们添加到您拥有的捕获组之间,以从左向右滑动所需的输出。然后,如果需要,之后可以添加更多边界。

enter image description here

RegEx电路

link可帮助您形象化表情:

enter image description here