请帮我编写一个有效的正则表达式。 条件:
- 最多可以有
9
个字符(从 1 到 9)。 - 前八个字符只能是大写字母。
- 最后字符只能是数字。
例子:
不匹配:
S3
FT5
FGTU7
ERTYUOP9
ERTGHYUKM
对应于:
E
ERT
RTYUKL
VBNDEFRW3
我尝试使用以下方法:
^[A-Z]{1,8}\d{0,1}$
但在这种情况下,FT5 示例匹配,尽管它不应该匹配。
最佳答案
您可以使用基于交替的正则表达式:
^(?:[A-Z]{1,8}|[A-Z]{8}\d)$
正则表达式详细信息:
^
:开始(?:
: 启动非捕获组[A-Z]{1,8}
:匹配1到8个大写字母|
:或者[A-Z]{8}\d
:匹配8个大写字母后跟一个数字
)
:结束非捕获组$
:结束
关于前八个字母和最后一个数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70185719/