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

时间:2019-04-24 05:19:02

标签: regex qregularexpression

我想按正则表达式检查这些表格,但我不知道该如何使用'或'|在里面 我有这些形式,其中“ 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 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式,

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

正则表达式说明

  • ^UC-以UC开头的字符串
  • (?:T|F[LCA]?|PA?)-仅匹配T或仅匹配FF,然后匹配LCA或仅PPA
  • \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

答案 1 :(得分:0)

This RegEx可能会帮助您以较少的边界来匹配输入,如果可能的话,仅使用UC从左边界:

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

如果愿意,可以添加更多边界,例如this RegEx

UC[FPTACL]+[1-3]+

this RegEx

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

或者this one,以覆盖更多数字:

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

您可以看到甚至不需要 | (OR)。