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

Я хочу проверить эти формы с помощью regularexpresion, но я не знаю, как мне использовать 'или' | в этом У меня есть эти формы, которые 'UC' постоянны во всех формах и после UC, могут быть F или P или T или FL или FC или FA или PA и после букв есть число с 3 цифрами.

UCF123

UCP123

UCT123

UCFL123

UCFC123

UCFA123

UCPA123

Я написал это: '/(?i)uc([tpf]?)|(f[lca]?)|(PA)\d\d\d/m' но я не работаю должным образом

Ответы [ 2 ]

3 голосов
/ 24 апреля 2019

Вы можете использовать это регулярное выражение,

^UC(?:T|F[LCA]?|PA?)\d{3}$

Regex Объяснение:

  • ^UC - начало строки с UC
  • (?:T|F[LCA]?|PA?) - соответствует только T ИЛИ только F или F, за которым следуют либо L или C или A ИЛИ * P или PA
  • \d{3} - с тремя цифрами
  • $ - конец строки

Кроме того, чтобы помочь вам выяснить, почему ваше регулярное выражение (?i)uc([tpf]?)|(f[lca]?)|(PA)\d\d\d не сработало, потому что вам нужно было сгруппировать три чередования в вашем регулярном выражении, как это (?i)uc(?:([tpf]?)|(f[lca]?)|(PA))\d\d\d, но даже тогда это было несколько неправильное группирование, потому что тогда это разрешить UC123, что не должно быть разрешено согласно вашим образцам. Правильное регулярное выражение, которое вам нужно использовать, дано в моем ответе.

Также обратите внимание, что я включил флаг нечувствительности к регистру в моей демонстрации, который вы можете легко сделать, поставив i после последней косой черты, как в своем регулярном выражении или в строке, включив этот (?i) непосредственно перед своим регулярным выражением, как вы уже сделали в своем регулярное выражение в вашем сообщении.

Regex Demo

0 голосов
/ 24 апреля 2019

Этот RegEx может помочь вам сопоставить ваши входные данные с меньшими границами, если это возможно, только ограниченными слева, используя UC:

UC[A-Z]+[0-9]+

Вы можете добавить больше границ, еслиВы хотите, например, этот RegEx :

UC[FPTACL]+[1-3]+

или этот RegEx :

UC[FPTACL]{1,2}[1-3]{3}

Или, может быть этот , чтобы указать больше цифр:

UC[FPTACL]{1,2}[0-9]{3}

Вы можете видеть, что вам даже не нужно | (ИЛИ).

...