【发布时间】:2020-02-11 12:45:20
【问题描述】:
我目前正在测试一个项目的输入验证,并且我正在使用正则表达式。
在尝试解析之前,我试图查看 TextBox 的内容是否为十进制数。
为此,我使用表达式\d+([\.\,]{1}\d+)?
我希望它检查是否有一个或多个数字,然后是零或一个点或逗号与一个或多个数字的组合。
有效的输入是:
123
12.3
1,23
无效的输入是:
12.
.123
1...2
1.2.3.3
在使用不同的已知错误输入对其进行测试后,该表达式似乎无法正常工作。我错过了什么吗?
我使用的代码是:
private bool validateFloatNumber(string Text, TextBox Box)
{
Regex regex = new Regex("\\d+([\\.\\,]{1}\\d+)?");
bool result = regex.IsMatch(Text);
if (!result)
{
if (Text.Length == 0)
{
Box.Background = Brushes.Gray;
}
else
{
Box.Background = Brushes.Red;
}
}
else
{
Box.Background = Brushes.Transparent;
}
return result;
}
我用输入1...1对其进行了测试,results中写入的值是true
Here is an image of the debug and the wrong value given in result
提前致谢!
【问题讨论】:
-
TextBox 验证调用什么事件?
-
为您的样本尝试一个正则表达式测试器,例如regexstorm.net/tester
-
单个数字有效吗?
-
@Rob 我按下按钮时调用它,这不是事件处理程序
-
@Yaman 我已经在 regex101 尝试过,它产生了正确的结果