只接受数字(0-9)和NO字符的正则expression式

我需要一个正则expression式,将只接受0-9的数字,没有别的。 没有字母,没有字符。

我认为这将工作:

^[0-9] 

甚至

 \d+ 

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

我认为,上面的正则expression式都可以做到这一点,我不知道为什么它接受这些字符。

编辑:

这正是我所做的:

  private void OnTextChanged(object sender, EventArgs e) { if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text)) { textbox.Text = string.Empty; } } 

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

您的正则expression式^[0-9]匹配以数字开头的任何内容,包括“1A”等string。 为了避免部分匹配,在末尾附加一个$

 ^[0-9]*$ 

这接受任何数字,包括没有。 要接受一个或多个数字,请将*改为+ 。 要接受一个数字,只需删除*

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

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

注意:在JavaScript中, \d等同于[0-9] ,但在.NET中,默认情况下\d与任何Unicode十进制数字匹配,包括像2(缅甸2)和߉(N'Ko 9)等异国情况的票价。 除非你的应用程序准备处理这些字符,否则坚持[0-9] (或提供RegexOptions.ECMAScript标志)。