我正在查找字符串,以mm / dd / yyyy,m / d / yyyy,m / dd / yyyy或mm / d / yyyy格式提取2个日期值。如何将该条件添加到我的正则表达式?
private static readonly Regex dateRegex = new Regex(@"\d{2}/\d{2}/\d{4}");
答案 0 :(得分:6)
private static readonly Regex dateRegex = new Regex(@"\d{1,2}/\d{1,2}/\d{4}");
修改:获取初始匹配后,尝试使用DateTime.TryParse
解析它们,以验证它们确实是有效日期。否则你的正则表达式将需要更加复杂(参见Jeff the Bear的回答)。
答案 1 :(得分:1)
这将完成这项工作:
\d{1,2}\/\d{1,2}\/\d{4}
答案 2 :(得分:0)
使用像(option1|option2)
|
是一个OR。
但是阅读您的示例,我认为您不需要它。试试这个。
(?<month>[0-9]{1,2})\/(?<day>[0-9]{1,2})\/(?<year>[0-9]{4})
在{n,m}
条款中,n
是必须匹配的最小数字,而m
是最大数字。
注意:这里有关于帖子的评论,其中涉及使用[0-9]
代替\d
,因为\d
也可以匹配某些帖子unicode characters。
答案 3 :(得分:0)
带“OR”。在正则表达式“|”:
"(regex1 | regex2)"
像:
Regex dateRegex = new Regex(@"(\d{1,2}/\d{1,2}/\d{4}|\d{1,2}\.d{1,2}\.d{1,4})");