【问题标题】:Regular expression for a positive decimal comma separator with 2 decimal places MVC带有 2 个小数位的正小数逗号分隔符的正则表达式 MVC
【发布时间】:2016-01-19 23:10:25
【问题描述】:

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

从 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 位小数。

【问题讨论】:

  • 有什么问题,有什么问题?您尝试解决问题的代码是什么
  • 您好,谢谢,我已经编辑了问题。
  • 嗨@WiktorStribiżew 谢谢,但它接受超过 2 位小数
  • 我不确定小数点分隔符是否为.。是吗?而且您还有, 作为数字分组符号?如果是,请尝试^[0-9]{0,3}(?:,[0-9]{3})*(?:[.][0-9]{1,2})?$。但是,这似乎适用于您提供的输入:^[0-9]{0,3}(?:,[0-9]{3})*(?:[.,][0-9]{1,2})?$
  • 我想要从 0,01 到 999,99 的数字,但我可以接受 0,1 或 9 或 9,01

标签: c# regex asp.net-mvc


【解决方案1】:

你可以使用

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

regex demo

解释

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

【讨论】:

  • 太棒了!谢谢,我做了一些测试,我认为它正在工作。我必须找到这个正则表达式来解决这个问题stackoverflow.com/questions/34882732/…我不知道如何,但是全球化他现在用“,”分隔符给我带来了问题。
  • 使用[,.] 代替,
  • 对不起,我没看懂您的评论
  • 我不明白你的分隔符有什么问题:) ^(?!0?([,.]0?0)?$)([0-9]{0,3}([,.][0-9]{1,2})?)?$ 将匹配即使小数分隔符可以混合。
  • 是的,但在葡萄牙,十进制值的分隔符是“,”,所以当我将 Globalize 与“pt-PT”文化一起使用时,我得到“字段 XXXX 必须是数字”。来自 jquery-validate-unobstrive 库的错误消息 :(
【解决方案2】:

或者使用这个模式

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

Demo

【讨论】:

    猜你喜欢
    • 2022-08-06
    • 1970-01-01
    • 2013-04-15
    • 2017-09-06
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多