小编典典

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

all

我需要一个只接受 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;
        }
    }

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


阅读 93

收藏
2022-05-26

共1个答案

小编典典

您的正则表达式^[0-9]匹配以数字 开头 的任何内容,包括“1A”之类的字符串。为避免部分匹配,$请在末尾附加 a:

^[0-9]*$

这接受任意数量的数字,包括无。要接受一位或多位数字,请将 更改*+。要完全接受一位数字,只需删除*.

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

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

注意: 在 JavaScript 中,\d等价[0-9]于 .NET,但在 .NET 中,\d默认匹配任何Unicode
十进制数字
,包括像Myanmar
2) 和逻 (N’Ko 9)这样的异国情调。除非您的应用准备好处理这些字符,否则请坚持使用[0-9](或提供RegexOptions.ECMAScript标志)。

2022-05-26