我陷入了一个问题,即只允许通过一次正则表达式(一些旧的硬代码)。我需要罗马数字的正则表达式。
我已经尝试过标准的 ie ^(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$
,但问题是它也允许 null( ''
) 值。
有什么办法可以检查问题吗?
我陷入了一个问题,即只允许通过一次正则表达式(一些旧的硬代码)。我需要罗马数字的正则表达式。
我已经尝试过标准的 ie ^(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$
,但问题是它也允许 null( ''
) 值。
有什么办法可以检查问题吗?
要要求必须至少存在一个字符,您可以在正则表达式的开头使用前瞻: (?=.)
^(?=.)(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$
另一种解决方案是单独测试您的字符串不是空字符串。
我喜欢这个:
\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