正十进制逗号分隔符的正则表达式,带有2个小数位MVC

时间:2016-01-19 23:10:25

标签: c# regex asp.net-mvc

MVC5项目中Model属性验证的有效值:

从0,01到999,99的十进制数字,但我可以接受0,1或9或9,01

0,01

,1

,20

1

1,2

1,20

00,2

00,20

现在我有:

[RegularExpression(@"^(((\d{1,3})(,\d{3})*)|(\d+))(.\d+)?$", ErrorMessage = "Largura inválida.")]

但它接受“。”超过2位小数。

2 个答案:

答案 0 :(得分:2)

您可以使用

^(?!0?(,0?0)?$)([0-9]{0,3}(,[0-9]{1,2})?)?$

请参阅regex demo

解释

  • ^ - 字符串开头
  • (?!0?(,0?0)?$) - 禁止前瞻,禁止字符串等于00,00,00偶数 ,0
  • ([0-9]{0,3}(,[0-9]{1,2})?)? - 可选组(由于末尾的?匹配一次或零次)匹配
    • [0-9]{0,3} - zerot o三位数字
    • (,[0-9]{1,2})? - 可选地匹配一组逗号,后跟1或2位数字
  • $ - 字符串结尾

答案 1 :(得分:0)

或使用此模式

^(?=.*[1-9])([0-9]{0,3}(?:,[0-9]{1,2})?)$

Demo