我可以选择使用正则表达式来验证一些值,我想知道最好的方法。
我有几个范围(不在同一个正则表达式/验证中),例如 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/