正则表达式只接受数字(0-9)和无字符

时间:2013-10-31 19:45:00

标签: c# regex

我需要一个只接受0-9数字的正则表达式而不是其他数字。没有字母,没有字符。

我认为这样可行:

^[0-9]

甚至

\d+

但这些是接受字符:^,$,(,)等

我认为上面的正则表达式都可以解决这个问题,但我不确定为什么会接受这些字符。

编辑:

这正是我在做的事情:

 private void OnTextChanged(object sender, EventArgs e)
    {

   if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
        {
            textbox.Text = string.Empty;
        }
    }

这允许我上面提到的字符。

1 个答案:

答案 0 :(得分:299)

你的正则表达式^[0-9]匹配任何开头的数字,包括“1A”之类的字符串。要避免部分匹配,请在末尾添加$

^[0-9]*$

这接受任意数量的数字,包括无数字。要接受一个或多个数字,请将*更改为+。要只接受一位数字,只需删除*

更新:您将参数混淆为IsMatch。模式应该是第二个参数,而不是第一个参数:

if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))

注意:在JavaScript中,\d相当于[0-9],但在.NET中,\d默认情况下与Unicode decimal digit匹配,包括异国情调的票价如2(缅甸2)和߉(N'Ko 9)。除非您的应用已准备好处理这些字符,否则请坚持使用[0-9](或提供RegexOptions.ECMAScript标记)。