我想按正则表达式检查这些表格,但我不知道该如何使用'或'|在里面 我有这些形式,其中“ 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'
,但是我不能正常工作
答案 0 :(得分:3)
您可以使用此正则表达式,
^UC(?:T|F[LCA]?|PA?)\d{3}$
正则表达式说明
^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)
来轻松实现已经在您的正则表达式中发布了。
答案 1 :(得分:0)
This RegEx可能会帮助您以较少的边界来匹配输入,如果可能的话,仅使用UC
从左边界:
UC[A-Z]+[0-9]+
如果愿意,可以添加更多边界,例如this RegEx:
UC[FPTACL]+[1-3]+
UC[FPTACL]{1,2}[1-3]{3}
或者this one,以覆盖更多数字:
UC[FPTACL]{1,2}[0-9]{3}
您可以看到甚至不需要 | (OR)。