Как использовать «ИЛИ» в регулярных выражениях? - PullRequest
1 голос
/ 12 мая 2019

Я хочу иметь регулярное выражение, которое принимает эти формы:

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 голосов
/ 12 мая 2019

Ваше выражение работает нормально, вы можете просто удалить начальный и конечный символы, и оно также пройдет 23456KW33C3.

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

Эта ссылка помогает вам изменять / обновлять выражения по вашему желанию.

enter image description here

Я не совсем уверен, что вы хотели бы соответствовать. Возможно, вы захотите упростить свое выражение и уменьшить ограничения, которые оно имеет.


Если вы хотите написать свои выражения с помощью ИЛИ, это выражение показывает, как вы можете это сделать:

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

Вы можете добавить их между имеющимися у вас группами захвата, чтобы провести нужные выводы слева направо. Затем, если вы хотите, после этого вы можете добавить больше границ.

enter image description here

RegEx Circuit

Эта ссылка поможет вам визуализировать ваши выражения:

enter image description here

...