使用或验证文本框浮点输入。或,

问题描述 投票:0回答:1

我试图仅使用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]*)?$");

有人知道如何只允许出现一个“,”或“。”吗?

c# wpf textbox
1个回答
0
投票

好,我终于使用:

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); }
© www.soinside.com 2019 - 2024. All rights reserved.