【发布时间】:2020-06-07 16:15:34
【问题描述】:
我尝试只在使用 WPF c# 的文本框中允许十进制输入,但允许单个出现“,”或“。”
我设法使用“。”验证文本框中的浮点输入。与
void NumericTextBoxInput(object sender, TextCompositionEventArgs e)
{
var regex = new Regex(@"^[0-9]*(?:\.[0-9]*)?$");
if (regex.IsMatch(e.Text) && !(e.Text == "." && ((TextBox)sender).Text.Contains(e.Text)))
e.Handled = false;
else
e.Handled = true;
}
现在我尝试做同样的事情,包括一个“,”作为十进制标记。以下正则表达式是可以的,但我不能只允许一个“。”或一个“,”,然后禁用两个十进制标记。
var regex = new Regex(@"^[0-9]*(?:(\.|\,)[0-9]*)?$");
有人知道如何只允许“,”或“.”出现一次吗?
【问题讨论】:
-
听起来像是完全错误的方法(甚至可能是XY problem)。将
float.TryParse与正确的文化一起使用将是我要走的路。 -
我明白,但我希望文本框允许用户输入点或逗号作为十进制标记,并避免输入 2 个十进制标记而不是一个。