【问题标题】:15-250 regex validation15-250 正则表达式验证
【发布时间】:2015-03-31 18:10:39
【问题描述】:

我正在尝试构建一些正则表达式来验证 c# wpf 上的文本框。我构建以下内容来验证从 6 到 3600 的数字:

^([6-9]|[1-9][0-9]{1,2}|[12][0-9]{3}|3[0-5][0-9]{2}|3600)$ 

现在我需要从 15 到 250 进行验证。我是 regex 的新手,我很难掌握它。

谢谢

【问题讨论】:

  • 为什么不直接使用int.TryParse 并检查整数?
  • 正则表达式不用于此!!
  • 数字上调会更合适。
  • 您是说您在某处找到了 6 到 3600 正则表达式,但不知道它是如何工作的?因为虽然正则表达式对于这项任务来说是一个奇怪的选择,但正则表达式背后的原理可以很容易地应用于任何范围。
  • 我找到了从6到3600的那个,现在我正在尝试做15到250

标签: c# regex validation


【解决方案1】:

直接翻译是:

^(1[5-9]|[2-9][0-9]|1[0-9]{2}|2[0-4][0-9]|250)$

拆分为 1[5-9] 或 15-19、[2-9][0-9] 或 20-99、1[0-9]{2} 或 200-199、2[0-4][0-9] 或 100-249、250

【讨论】:

    【解决方案2】:

    您希望验证 6 - 3600 和另一个 15 - 250 的数字?为什么不将数字转换为 int 并检查最小值和最大值?

    查看以下内容以在 WPF 中正确实现验证 https://msdn.microsoft.com/en-us/library/ms753962%28v=vs.110%29.aspx

    【讨论】:

    • 同意,但与使用正则表达式进行数字验证相比,这是一个不同方向的答案。
    【解决方案3】:

    以下 RegEx 应满足 15-250 范围内的所有数字。但是,正如我在 cmets 中警告过的那样,NumericUpDown 是此类东西的更好选择:

    \b(2[0-4]\d)|(1\d\d)|(250)|([2-9]\d)|(1[5-9])\b
    

    【讨论】:

    • dotNet 这适用于小于 15 的值,但不适用于高于 250 的值。
    • @user3614070:- 更新了正则表达式。用正则表达式演示检查我的答案!
    【解决方案4】:

    这是Matching Numeric Ranges with a Regular Expression的好书

    15 到 250 的正则表达式是

    ^(1[5-9]|[2-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|250)$
    

    Regex Demo

    【讨论】:

    • 该链接应该成为您答案的核心(包含要点摘要,以便答案独立),而不是事后诸葛亮。
    • @IMSoP:- 用正则表达式更新了我的答案!
    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2021-02-24
    • 2014-02-25
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多