我试图仅使用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]*)?$");
有人知道如何只允许出现一个“,”或“。”吗?
好,我终于使用:
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
{
string input = ((TextBox)sender).Text + e.Text;
string pattern = "^[0-9]+[.|,]?([0-9]+)?$";
Regex regex = new Regex(pattern);
e.Handled = !regex.IsMatch(input);
}
似乎我最初的正则表达式不正确。因此,现在,按预期方式,我只能输入数字,并且可以输入或。但只有一次。希望这对某人有用。
有关信息,我处理或。稍后在代码中:
if (Regex.IsMatch(myValue, @"(,)"))
{ Double.TryParse(myValue, NumberStyles.Any, CultureInfo.CurrentCulture, out myValued); }
else { Double.TryParse(myValue, NumberStyles.Any, CultureInfo.InvariantCulture, out myValued); }