1

在我的 projcet(WPF) 文本框中只允许正负十进制数。我使用正则表达式然后它接受 -.values。但它采用这样的值

-123.-2 这是不正确的。我的要求是它接受这样

233334 -233333 -2.3444

我使用了这段代码。

    private void NumericOnly(System.Object sender, System.Windows.Input.TextCompositionEventArgs e)
    {
        e.Handled = IsTextNumeric(e.Text);

    }


    private static bool IsTextNumeric(string str)
    {
        System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("[^0-9.-]");
        return reg.IsMatch(str);

    }

有人请帮助我。该文本框如何接受正负十进制数值。

4

2 回答 2

0

我认为最好的选择是绑定到双精度,因为这会在输入错误时突出显示文本框,这很方便给用户反馈他们输入的内容。

或者您可以使用 double.TryParse 检查数字是否有效

private static bool IsTextNumeric(string str)
{
    double value;
    return double.TryParse(str, out value);
}
于 2013-02-28T07:24:58.997 回答
0

您只希望负号作为第一个可选字符。所以:

"-?[\.0-9]+"

如果您真的想为此使用 RegEx。但也许像Double.TryParse()这样的东西会更好?

于 2013-02-28T07:21:15.730 回答