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

mo *_*laz 137 c# regex

我需要一个只接受0-9数字的正则表达式而不是别的.没有字母,没有字符.

我认为这会奏效:

^[0-9]
Run Code Online (Sandbox Code Playgroud)

甚至

\d+
Run Code Online (Sandbox Code Playgroud)

但这些是接受字符:^,$,(,)等

我认为上面的正则表达式都可以解决问题,我不确定为什么接受这些字符.

编辑:

这正是我在做的事情:

 private void OnTextChanged(object sender, EventArgs e)
    {

   if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
        {
            textbox.Text = string.Empty;
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*Liu 341

你的正则表达式^[0-9]匹配任何以数字开头的东西,包括像"1A"这样的字符串.要避免部分匹配,请将a追加$到末尾:

^[0-9]*$
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

  • / ^ [0-9]*$ /作为正确答案. (10认同)
  • 以防万一,如果有人想允许否定(-)符号。/^-?[0-9]*$/ (5认同)
  • @xpioneer:^ 和 $ 被称为 *锚*。^ 匹配字符串的开头,$ 匹配字符串的结尾。通过将 ^ 放在正则表达式的开头和 $ 的末尾,您可以确保在正则表达式之前或之后不允许有其他字符。例如,正则表达式`[0-9]` 匹配字符串“9”和“A9B”,但正则表达式`^[0-9]$` 只匹配“9”。 (4认同)
  • 此正则表达式只允许使用 '$' 的字符串,请参阅我的编辑。 (2认同)
  • 在 Javascript 中,允许值 123-456 `(\d)*$` (2认同)