我正在为 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.
正则表达式中缺少什么?
你可以使用
^\d+(?:\.(?:[05]0?|[27]5?)?)?$
请参阅 正则表达式演示。
详情:
^
- 字符串的开头\d+
- 一位或多位数字(?:\.(?:[05]0?|[27]5?)?)?
- 可选序列
\.
- 一个点(?:[05]0?|[27]5?)?
- 可选序列
[05]0?
- 0
或 5
,然后是可选的 0
|
- 或[27]
- 2
或 7
然后5?
- 可选 5?
$
- 字符串结尾。