只接受数字(0-9)而不接受字符的正则表达式

32 浏览
0 Comments

只接受数字(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
0 Comments

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

0