RegEx表现得很奇怪。我错过了什么?

时间:2016-07-23 15:48:53

标签: c# regex

我正在检查StringPatterns。 这是RegEx:

Regex regEx = new Regex("(\\d{4}/\\d{1})");

文本示例如下所示:1234/5,1234/6,1234/8。一切正常,直到有一个类似#34; 1234/89"的字符串,并且匹配的结果仍然是真的。我错过了什么?我也有这个RegEx:

Regex regEx = new Regex("(\\d{4}/\\d{1}\\W)");

有了这个问题,这个问题我提到的例子是不匹配的,因此将它们标记为假。

2 个答案:

答案 0 :(得分:4)

您错过了正则表达式应始终与整个字符串匹配的事实,但在您的情况下,即使是字符串的一部分也是匹配的。使用开始/结束锚点:

^(\\d{4}/\\d{1})$

答案 1 :(得分:-2)

static void Code () {

    Regex regEx = new Regex(@"(\d{4}/\d{1,2})");

    foreach (string input in new string [] {
        "1234/5", "1234/6", "1234/8", "1234/89"
    })
        Console.WriteLine (regEx.IsMatch (input));

    /*
        True
        True
        True
        True
    */

}