c# - 用于验证多个值范围的正则表达式 (.NET)

标签 c# .net regex

我可以选择使用正则表达式来验证一些值,我想知道最好的方法。

我有几个范围(不在同一个正则表达式/验证中),例如 1-9(这很简单 :P),以及:

1-99
1-999
1-9999

此外,我需要检查前导零,因此 0432 是一个可能的匹配项。

我知道 Regex 可能不是最好的方法,但它是我所拥有的,它是我必须使用的框架的一部分。

最佳答案

所有其他答案都存在根本缺陷!!

bool isMatch = Regex.IsMatch("9999", @"\d{1,3}");

虽然数字不是 1-3 位数字,但返回真。这是因为单词的一部分与表达式匹配。

你需要使用:

bool isMatch = Regex.IsMatch("9999", @"^\d{1,n}$");

其中 n 是最大位数。

更新

为了确保它不为零,将其更改为以下:

bool isMatch = Regex.IsMatch("9999", @"(^\d{2,n}$)|[1-9]");

更新 2 00或者000或者0000还是不行。我脑袋疼,待会儿再看看。我们可以用两个表达式 ("(^\d{2,n}$)|[1-9]"和 NOT (0)|(00)|(000)|(0000)) 来做,但这可能不是接受为单个正则表达式答案。

关于c# - 用于验证多个值范围的正则表达式 (.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3708634/

相关文章:

c# - 初学者需要的降低耦合简单示例

c# - WPF 绑定(bind)依赖属性

c# - 以编程方式创建 sqlite 数据库(如果它不存在)?

regex - 匹配 "Order by"sql 语法的正则表达式

c# - 实现 IEnlistmentNotification 时我应该在哪里执行操作?

c# - MVC4 索引操作无法正常工作

C# 编译器在 C 中?

.net - 是什么提供了自旋锁的有效性?

Python正则表达式匹配带引号或不带引号的字符串

html - 如何在 Emacs 中折叠 html 标签?