我需要写一个正则表达式。长度> 1且<= 4个罗马数字,2个西里尔字母和6个数字。
检查罗马数字的正确性是必要的。
简体中文
我找到了这样一个提议,但它是在Perl中,并不完全符合我的需要
/^M{0,3}(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])(?<=.)-[А-Я]{2}$/
- XVIААА123456 - true
- IVА 123456 - true
- XVIA - false
- XVI -假
- XVIA 123456-假
- XVIAA 123-假
1条答案
按热度按时间5rgfhyps1#
您可以使用以下命令:
这里:
^
字符串的开头,(?=[IVXLCDM]{1,4}[^IVXLCDM])
lookahead检查begging后面是1到4个罗马数字(稍后检查西里尔符号之前的罗马数字的实际格式),(?:C(?:D|M)|D?C{0,3})(?:X(?:L|C)|L?X{0,3})(?:I(?:V|X)|V?I{0,3})
匹配罗马号码。引用自here,[А-Я]{2}
匹配两个高位西里尔字母符号,\d{6}
匹配六个数字,$
匹配字符串的结尾。演示here。