使用正则表达式对十进制数进行 Wpf 文本框文本验证(以 0.25 为增量)[重复]

问题描述 投票:0回答: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.
正则表达式中缺少什么?

c# regex wpf
1个回答
0
投票

你可以使用

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

请参阅 正则表达式演示

详情

  • ^
    - 字符串的开头
  • \d+
    - 一位或多位数字
  • (?:\.(?:[05]0?|[27]5?)?)?
    - 可选序列
    • \.
      - 一个点
    • (?:[05]0?|[27]5?)?
      - 可选序列
      • [05]0?
        -
        0
        5
        ,然后是可选的
        0
      • |
        - 或
      • [27]
        -
        2
        7
        然后
      • 5?
        - 可选
        5?
  • $
    - 字符串结尾。
© www.soinside.com 2019 - 2024. All rights reserved.