如何编写JavaScript正则表达式匹配1-4个有效罗马数字+2个西里尔字母+6位数字
JavaScript正则表达式解决方案
最终正则表达式
const regex = /^(?=[MDCLXVI]{1,4})M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[А-Я]{2}\d{6}$/;
正则拆解
- 罗马数字验证部分:
(?=[MDCLXVI]{1,4}):正向预查,确保罗马数字部分由1-4个合法罗马字符(M、D、C、L、X、V、I)组成M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}):匹配标准合法罗马数字结构,覆盖1-3999范围内的有效写法,结合预查限制字符数为1-4
- 西里尔字母部分:
[А-Я]{2}:匹配2个大写西里尔字母(注意是西里尔字符集的А到Я,而非英文A-Z) - 数字部分:
\d{6}:匹配连续6位阿拉伯数字 - 边界控制:
^和$确保整个字符串完全匹配,避免部分匹配
测试用例验证
- 匹配成功:
XVIАА123456:罗马数字XVI(3字符,合法)+ 西里尔字母АА + 6位数字123456IVАЯ123456:罗马数字IV(2字符,合法)+ 西里尔字母АЯ + 6位数字123456
- 匹配失败:
XVIA:缺少西里尔字母和数字部分XVI:仅包含罗马数字,缺少后续两部分XVIA123456:仅1个西里尔字母,不符合2个的要求XVIAA123:仅3位数字,不符合6位的要求
内容的提问来源于stack exchange,提问作者NEATweb
相关产品推荐
相关产品推荐

