正则表达式只允许数字、逗号和破折号

Regular Expression allow only numbers, commas and dashes

我正在尝试提出一个数据注释正则表达式来匹配以下格式。

34

38-30

100,25-30

4-5,5,1-5

基本上表达式应该只允许 numbers, -(dash) and ,(comma) 任意顺序

我试过关注,但没成功。

[RegularExpression(@"(0-9 .&'-,]+)", ErrorMessage ="Lot numbers are invalid.")]

^[0-9,-]*$。看看这个 demo.

我认为您的用例具有数字的 CSV 列表,或数字的 范围 (标识为数字后接破折号和另一个数字)。我们可以使用以下正则表达式:

[0-9]+(?:-[0-9]+)?(,[0-9]+(?:-[0-9]+)?)*

此正则表达式匹配一个数字,后跟一个可选的短划线和另一个数字,然后是该数量,然后是逗号和另一个类似的术语,任意次数。

在下面的演示中,我在正则表达式的两边都添加了锚点。您是否需要这样做取决于您打算如何使用该模式。

Demo