代码之家  ›  专栏  ›  技术社区  ›  Kirk

使用Regex[重复]以0.25为增量对十进制数字进行Wpf文本框文本验证

  •  0
  • Kirk  · 技术社区  · 1 年前

    我正在为WPF创建一个自定义NumericUpDown控件,需要验证文本框中的用户输入。我不确定TextChanged事件是否是执行此操作的正确位置,但这正是我目前正在处理的问题。

    每次按键后都会发生TextChanged事件,所以我必须检查以确保每个数字都符合参数。

    我的最小值、最大值和增量各不相同,但它们都非常相似:

    Minimum = 4400
    Maximum = 5850
    Increment = 0.25
    

    我正试图找出一个正则表达式,它将确保小数后的任何数字都是 00 25 50 75 以及这些数字的开头,0、2、5或7。

    这是我目前拥有的正则表达式,但它忽略了小数点后键入的数字。

    (\d+)(\.*)(0|2|5|7|00|25|50|75)*
    

    所以如果我输入数字4254.3, Match 以值返回成功 4254. 正则表达式缺少什么?

    注意,这与 This question 因为我需要在小数点之前至少有4位数字。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Wiktor Stribiżew    1 年前

    您可以使用

    ^\d+(?:\.(?:[05]0?|[27]5?)?)?$
    

    请参阅 regex demo .

    细节 :

    • ^ -字符串的开头
    • \d+ -一个或多个数字
    • (?:\.(?:[05]0?|[27]5?)?)? -的可选序列
      • \. -一个点
      • (?:[05]0?|[27]5?)? -的可选序列
        • [05]0? - 0 5 然后是可选的 0
        • | -或者
        • [27] - 2 7 然后
        • 5? -一个可选的 5.
    • $ -字符串的末尾。
    推荐文章