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

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

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

1382668 次浏览

你的正则表达式^[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标志)。