使用C#RegularExpressions验证用户输入

时间:2019-04-01 11:40:28

标签: c# regex

如何验证数字输入,最大长度限制为3,并且不应以零个字符开头(010、001应该无效)。我将C#regex.IsMatch()与以下正则表达式([1-9]|[1-9][0-9]|[1-9][0-9][0-9])*一起使用。但是它会验证输入从零开始。该如何解决呢?。

5 个答案:

答案 0 :(得分:4)

您可以通过重复字符类0到2次来忽略替换,并且应该使用锚点来声明字符串的开头^和结尾$

^[1-9][0-9]{0,2}$
  • ^字符串的开头
  • [1-9]匹配数字1-9
  • [0-9]{0,2}匹配数字0-9的0、1或2次
  • $声明字符串的结尾

用法:

bool isMatch = Regex.IsMatch("100", @"^[1-9][0-9]{0,2}$");

Regex demo

答案 1 :(得分:1)

正则表达式非常确定。请注意,您无需任何正则表达式即可轻松实现此目标:

static bool IsValid(string input)
{
    return !string.IsNullOrEmpty(input)
        && input.Length < 3 && !input.StartsWith("0") && input.All(char.IsDigit); 
}

Try it online

答案 2 :(得分:1)

我会更具体一点:

^((?!(0))[0-9]{0,3})$ 

说明:

  • 第一个不是0,我想在0到9之间最多3个数字。

答案 3 :(得分:1)

您可以使用^[1-9][0-9]{0,2}$,它不允许以零开头

答案 4 :(得分:1)

[1-9][0-9]{2}$

这将根据您的要求工作。正则表达式好友的睾丸,并附有以下测试案例

  1. 001失败
  2. 1000000次失败
  3. 900次通过
  4. 010失败