【问题标题】:regex c# expression to validate all numbers except zero正则表达式 c# 表达式验证除零以外的所有数字
【发布时间】:2017-06-12 18:39:14
【问题描述】:

我正在使用需要验证数据的 Web API,因此我为此使用了正则表达式。 在网络中,我有一个字段,该字段只有最多 4 位的负数。 因此,同样,我将正则表达式放入 API 中,如下所示:

[RegularExpression(@"^-\d{0,4}$", ErrorMessage = "The cond_ab field must be negative number and maximum length is 4")]

但是当我通过 0 时它会失败,然后它会给出验证消息。所以我需要正则表达式来验证数字,它必须是负数并且最多 4 位数字,但如果数字是 0,它不应该通过

【问题讨论】:

  • 所以你想要一个非零数字后跟 0 到 3 个可能为零的数字?或者您是否希望允许使用前导零,例如 -0034
  • 你当前的表达式也只接受-
  • @RobbyCornelissen 0 应该被接受,我试图通过验证来实现.. 现在如果我发送 0,它会抛出验证消息.. 所以我希望 0 被接受
  • 您当前的正则表达式强制使用-。试试-0。那应该被接受。
  • @Verarind 是的,我知道,但这是我想避免的。所以只发送 0 也应该有效

标签: c# regex validation


【解决方案1】:

使用此表达式接受零 (0) 或最多 4 位的任何负数:

@"^(0|-[1-9]\d{0,3})$"

如果你也想接受-0-0123等点赞,可以使用:

@"^(0|-\d{1,4})$"

【讨论】:

  • 如果我将字段值发送为 0,我仍然会收到验证消息
  • @Mahajan344 更新了我的答案
  • 请使用^(0|-[1-9]\d{0,3})$,因为我很确定-0 不应该匹配。顺便说一句:只有- 也可以避免。
  • @Verarind 你怎么知道? -0 在数值上等同于 0,那为什么不呢?
  • 嗯。 ... 好的。可能是。但我仍然认为- 不应该匹配。
【解决方案2】:

使用这个表达式。 如果你通过 -12 那么它会工作,如果你通过 -012 然后给出错误。

^-[1-9]\d{0,4}(.\d*)?$

【讨论】:

  • 这也适用于正数,但不应该。
猜你喜欢
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多