3

我陷入了一个问题,即只允许通过一次正则表达式(一些旧的硬代码)。我需要罗马数字的正则表达式。

我已经尝试过标准的 ie ^(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$,但问题是它也允许 null( '') 值。

有什么办法可以检查问题吗?

4

2 回答 2

2

要要求必须至少存在一个字符,您可以在正则表达式的开头使用前瞻: (?=.)

^(?=.)(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$

另一种解决方案是单独测试您的字符串不是空字符串。

于 2010-04-05T09:49:03.170 回答
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
于 2014-07-12T17:14:42.490 回答