正则表达式 c# 表达式验证除零以外的所有数字
Posted
技术标签:
【中文标题】正则表达式 c# 表达式验证除零以外的所有数字【英文标题】:regex c# expression to validate all numbers except zero 【发布时间】:2017-06-12 18:39:14 【问题描述】:我正在使用需要验证数据的 Web API,因此我为此使用了正则表达式。 在网络中,我有一个字段,该字段只有最多 4 位的负数。 因此,同样,我将正则表达式放入 API 中,如下所示:
[RegularExpression(@"^-\d0,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 也应该有效
【参考方案1】:
使用此表达式接受零 (0
) 或最多 4 位的任何负数:
@"^(0|-[1-9]\d0,3)$"
如果你也想接受-0
、-0123
等点赞,可以使用:
@"^(0|-\d1,4)$"
【讨论】:
如果我将字段值发送为 0,我仍然会收到验证消息 @Mahajan344 更新了我的答案 请使用^(0|-[1-9]\d0,3)$
,因为我很确定-0
不应该匹配。顺便说一句:只有-
也可以避免。
@Verarind 你怎么知道? -0
在数值上等同于 0
,那为什么不呢?
嗯。 ... 好的。可能是。但我仍然认为-
不应该匹配。【参考方案2】:
使用这个表达式。 如果你通过 -12 那么它会工作,如果你通过 -012 然后给出错误。
^-[1-9]\d0,4(.\d*)?$
【讨论】:
这也适用于正数,但不应该。以上是关于正则表达式 c# 表达式验证除零以外的所有数字的主要内容,如果未能解决你的问题,请参考以下文章
C#正则验证大全 Regex.IsMatch()正则表达式验证