正则表达式与字符串不匹配

Regular Expression doesn't Match with string

我正在尝试使用正则表达式在字符串中查找字符串序列。

我要找的模式是:

dd.dd.dddd dd:dd:dd //d是0-9的数字

我的正则表达式是:

Regex r = new Regex(@"(\d[0-9]{2}.\d[0-9]{2}.\d[0-9]{4}\s\d[0-9]{2}:\d[0-9]{2}:\d[0-9]{2})$");

我现在正在尝试检查字符串“27.11.2014 09:14:59”是否与正则表达式匹配,但遗憾的是它不匹配。

string str= "27.11.2014 09:14:59";
Regex r = new Regex(@"(\d[0-9]{2}.\d[0-9]{2}.\d[0-9]{4}\s\d[0-9]{2}:\d[0-9]{2}:\d[0-9]{2})$");
test = r.IsMatch(str,0);

//output: test=false

有人知道为什么字符串不匹配那个正则表达式吗?

\d[0-9]{2} 匹配 三个 数字:

\d      first digit
[0-9]   second digit
{2}     causes the previous expression ([0-9]) to match again

如果删除所有出现的 \d,您的模式应该有效。不过,您应该转义所有点 .,因为现在它们匹配 任何 字符,而不仅仅是 ..

正如 Rawing 所说,上面的正则表达式试图匹配 3 个数字而不是一个。对于所有想知道正则表达式应该是什么样子的人:

@"(\d{2}.\d{2}.\d{4}\s\d{2}:\d{2}:\d{2})$"

这很有效,至少对我来说是这样。