求助编写符合首8位大写末尾可带1位数字规则的正则表达式
你写的^[A-Z]{1,8}\d{0,1}$存在的问题是没有限制数字的出现前提:只要总长度不超过9,数字可以跟在1到7个字母之后,这就导致FT5这类总长度不足9、但末尾带数字的字符串也会被匹配,不符合要求。
正确的正则可以直接对应题目要求的两类合法格式,用分支逻辑实现:
^[A-Z]{1,8}$|^[A-Z]{8}\d$
规则说明
- 正则用
|拆分出两个互斥的匹配分支,首尾的^和$确保是整串完全匹配,不会出现部分匹配的误判 - 第一个分支
^[A-Z]{1,8}$匹配1-8位纯大写字母的合法场景 - 第二个分支
^[A-Z]{8}\d$匹配8位大写字母+1位数字的9位长度合法场景
验证效果
- 不匹配案例:
S3、FT5、FGTU7都属于总长度不足9但末尾带数字,不符合两个分支的规则;ERTYUOP9总长度为8但末尾带数字,同样不匹配;ERTGHYUKM总长度为9但末尾是字母,不匹配第二个分支 - 匹配案例:
E、ERT、RTYUKL符合1-8位纯大写字母规则;VBNDEFRW3符合8位大写字母加1位数字规则
内容的提问来源于stack exchange,提问作者Oleg Krupnik
相关产品推荐
相关产品推荐

