只接受数字(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标志)。