我有字符串例如:06.07.2010 (tor.)
我想使用正则表达式仅提取06.07.2010
,但以下操作无效:
^([0-9]{1,2}).([0-9]{1,2}).([0-9]{4,4})$
^([1-9]|0[1-9]|[12][0-9]|3[01])[- /.]([1-9]|0[1-9]|1[012])[- /.][0-9]{4}$
有人可以告诉我这里有什么问题吗?
答案 0 :(得分:3)
最后是$
。这意味着年份数字后面不能有任何字符 - 换句话说,RE必须匹配整个字符串。
你可能想要这个:
^([0-9]{1,2}).([0-9]{1,2}).([0-9]{4,4})
答案 1 :(得分:1)
也许还有比你说的更多或传入的字符串可能更复杂,但为什么不使用String.Split? IMO更加清晰。
string dateAndStuff = "06.07.2010 (tor)";
string[] parts = dateAndStuff.Split(' ');
if(parts.Length > 0)
{
string date = parts[0];
if(!string.IsNullOrEmpty(date)) //use date
}
答案 2 :(得分:0)
问题是你指定字符串($)的结尾应该在一年之后立即跟随。如果删除该条件,您将能够从字符串中获取日期。您还要单独捕获组件,因此您不会将日期作为单个字符串。此外,如果您希望它们仅匹配句点,则需要转义句点,否则它们将匹配任何字符:
^([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4,4})
或简单地说:
^(\d{1,2}\.\d{1,2}\.\d{4})