小编典典

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

c#

我需要一个正则表达式,它将只接受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;
        }
    }

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


阅读 543

收藏
2020-05-19

共1个答案

小编典典

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

^[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标志)。

2020-05-19