【问题标题】:C# WPF using Regex validation. How to check numbers between a range?C# WPF 使用正则表达式验证。如何检查范围之间的数字?
【发布时间】:2016-12-04 21:43:42
【问题描述】:

我正在为 Uni 编写一个需要一些基本验证的程序。

我有一个文本框,允许用户输入他们的年龄。我已经成功编写了一个正则表达式,它检查输入到文本框中的值是否仅包含数字值并且是两个字符长:

Regex agePattern = new Regex(@"^[0-9]{1,2}\z$"); // Age entered must be numeric characters only (0-9) and may only be two charaters long

        if (agePattern.IsMatch(ageBox.Text) == false)
        {
            MessageBox.Show("Customer's age is not valid. Age must be in numeric format & can only be two characters long"); // If Regex pattern & entered string DO NOT match - user get's this message
            return;
        }
        else
        {
            // do something
        }

我的问题是,我可以扩展我的 Regex 表达式以将年龄值限制在 1 到 99 之间吗?

我以前没有写过任何正则表达式,我很挣扎。

谢谢!

【问题讨论】:

  • ^[1-9][0-9]?$ ...

标签: c# regex wpf validation


【解决方案1】:

改为解析整数怎么样?

bool IsValidAge(string ageString) {
   int age;
   return int.TryParse(ageString, out age) && age >= 1 && age <= 99;
}

【讨论】:

    【解决方案2】:

    试试这个正则表达式:

    ^[1-9]?[0-9]?\z
    

    或者跳过正则表达式,将文本解析为 int 并编写一个函数来确定输入在 1 到 99 之间。

    【讨论】:

      【解决方案3】:

      试试这个正则表达式:

      ^[1-9]?[0-9]?\z
      

      这匹配一个空输入(因为两个数字都是可选的)以及0? 越少越好:

      ^[1-9][0-9]?$
      

      A Better .NET Regular Expression Tester 试试(大多数其他在线测试人员不允许指定空源)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-30
        • 1970-01-01
        • 2011-04-12
        • 2011-03-06
        • 2020-01-20
        • 2015-02-27
        相关资源
        最近更新 更多