正则表达式 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()正则表达式验证

C#常用正则表达式符号大全

如何使用正则表达式 python3 替换除空格和换行符旁边的数字以外的所有其他符号

C# 正则表达式

C#正则基础正则表达式

如何用正则表达式去除一个字符串里面的数字和小数点以外的字符