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

cha*_*ara 3 regex asp.net-mvc data-annotations

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

34

38-30

100,25-30

4-5,5,1-5

基本上表达式应该只允许数字-(破折号),(逗号)以任何顺序

我尝试遵循但无法使其正常工作。

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

Spe*_*ion 5

它是^[0-9,-]*$。看看这个演示


Tim*_*sen 5

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

[0-9]+(?:-[0-9]+)?(,[0-9]+(?:-[0-9]+)?)*
Run Code Online (Sandbox Code Playgroud)

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

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

演示