我需要一个正则表达式,将只接受数字从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;
        }
    }

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


regex ^[0-9]匹配任何以数字开头的内容,包括像“1A”这样的字符串。为了避免部分匹配,在结尾附加$:

^[0-9]*$

它接受任意数量的数字,包括none。要接受一个或多个数字,请将*更改为+。要精确地接受一个数字,只需去掉*。

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

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

注意:在JavaScript中,\d相当于[0-9],但在。net中,\d默认匹配任何Unicode十进制数字,包括像႒(Myanmar 2)和߉(N'Ko 9)这样的外来数字。除非你的应用程序准备好处理这些字符,否则坚持使用[0-9](或提供RegexOptions)。ECMAScript国旗)。