只接受数字(0-9)而不接受字符的正则表达式
只接受数字(0-9)而不接受字符的正则表达式
这个问题已经有了答案 :
我需要一个正则表达式,只接受从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; } }
它允许我上面提到的字符。
admin 更改状态以发布 2023年5月23日
你的正则表达式 ^[0-9]
匹配任何以数字开头的字符串,包括"1A"这样的字符串。为了避免部分匹配,末尾添加$
:
^[0-9]*$
这个接受任意数量的数字,包括零个数字。如果要接受一个或多个数字,将*
改为+
。如果要接受一个数字,只需删除*
。
更新:您混淆了IsMatch
的参数。模式应该是第二个参数,而不是第一个:
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
注意:在JavaScript中,\d
等同于[0-9]
,但在.NET中,默认情况下,\d
匹配任何Unicode十进制数字,包括像႒(缅甸2)和߉(N'Ko 9)这样的奇异字符。除非您的应用程序准备处理这些字符,否则请使用[0-9]
(或提供RegexOptions.ECMAScript标志)。