我陷入了一个问题,即只允许一次正则表达式传递(一些旧的硬代码)。我需要罗马数字的正则表达式。
我尝试过标准的^(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$
,但问题是它还允许null(''
)值。
有没有办法检查是否有问题?
答案 0 :(得分:2)
要求必须至少包含一个字符,您可以在正则表达式的开头使用lookahead (?=.)
:
^(?=.)(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$
另一个解决方案是单独测试你的字符串不是空字符串。
答案 1 :(得分:1)
我喜欢这个:
\b(?=[MDCLXVI]+\b)M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\b