【发布时间】:2015-12-15 06:05:35
【问题描述】:
好的,我已经为此奋斗了足够长的时间。我有一个正则表达式
^(1[0-2]|0[1-9]|\d)\/(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d)
这将匹配 8/15、08/15、8/2015、08/2015 所有我需要的。到目前为止,一切都很好。但我不需要它匹配 08/01/2015,但我在 08/01 得到部分匹配。如何忽略 08/01/2015?
【问题讨论】:
-
如果您使用的是
C#,既然可以使用DateTime库,为什么还要使用正则表达式?您几乎可以肯定会在正则表达式中找到一个在特定情况下会失败的答案。闰年呢?还是少于 30 天的几个月?名单还在继续。 -
也许negative look ahead assertion 会有所帮助。在模式的末尾尝试
(?!/)。 -
@Rob 我正在搜索数百个包含数万字和数十个日期的文档,试图找到日期。这是一个多遍过程,在第一遍中,我只是想找到不符合 xx/dd/yyyy 或 xx/dd/yy 模式的日期。