我正在检查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)");
有了这个问题,这个问题我提到的例子是不匹配的,因此将它们标记为假。
答案 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
*/
}