改进正则表达式以支持匹配成对连字符
优化MBI正则表达式(支持0或2个连字符)
最终正则表达式
^[1-9](?:(?:[A-Z&&[^SLOIBZ]][0-9A-Z&&[^SLOIBZ]]\d){2}|(?:[A-Z&&[^SLOIBZ]][0-9A-Z&&[^SLOIBZ]]\d-){2})[A-Z&&[^SLOIBZ]]{2}\d{2}$
说明
- 加入
^和$锚点,确保整个字符串完全匹配,避免部分匹配无效内容 - 通过分支结构
(?:A|B)严格限定两种合法格式:- 分支A:无连字符的原始格式,两个3字符组直接拼接
- 分支B:带两个连字符的格式,每个3字符组后都紧跟连字符
- 保留原正则对MBI字符集的限制(排除S、L、O、I、B、Z),符合MBI格式规则
匹配示例
- 合法匹配:
1EG4TE5MK72、1EG4-TE5-MK72 - 拒绝匹配:
1EG4TE5-MK72(仅含1个连字符)、0EG4TE5MK72(开头为0)、1SG4TE5MK72(含禁用字符S)
内容的提问来源于stack exchange,提问作者Pavel Petrashov
相关产品推荐
相关产品推荐

