1

我正在查看一个 C# Regex 教程,该教程指出“\d”匹配单个数字 0 到 9。

但是,当我运行以下程序时。

    static void Main(string[] args)
    {
        string s = "45";
        Regex myRegex = new Regex(@"(\d)");

        if( myRegex.IsMatch(s))
        {
            System.Console.WriteLine("Matched");
        }
        else
        {
            System.Console.WriteLine("Not Matched");
        }

        Console.ReadKey();
    }

控制台打印出“匹配”。

4

2 回答 2

10

是的,它会找到4, 因为正则表达式匹配不必覆盖整个输入字符串。如果您想确保您的字符串只是一个数字,请包括标记字符串开头和结尾的锚点:

Regex myRegex = new Regex(@"^(\d)$");

现在匹配必须从字符串的开头开始(用 标记^),并且必须在字符串的结尾(用 标记$)结束。因此,只允许输入一位数。省略它允许正则表达式匹配您输入的任何子字符串。

于 2012-10-17T21:45:44.040 回答
3
Regex myRegex = new Regex(@"^\d$");
于 2012-10-17T21:54:27.090 回答