【发布时间】:2014-07-31 00:55:02
【问题描述】:
下面是我的正则表达式:
Pattern ddpat = Pattern.compile( "(\\d{1,2}/\\d{1,2}/\\d{4})" );
对于无效日期模式02/29/1975(因为它不是闰年),当我在这个无效日期尝试上述REGEX 时,我不希望我的正则表达式匹配这个无效日期。
请建议有什么方法可以实现这一点。
【问题讨论】:
-
正则表达式无法做到这一点,您必须编写这些类型验证代码
-
这个问题根本没有答案
-
理论上 (!!!) 您可以创建一个正则表达式枚举 (!!!) 所有有效日期,并使用因子来减少重复(今天或将来某个时间停止)。这将是一个很大的正则表达式,但这将是一种“实现这一目标的方式”。 (这不是认真的。)
-
Regex 是这项工作的错误工具(检查日期的有效性)。问题不仅在于闰年,这个正则表达式也将接受:
99/99/9999;) -
我同意这一点。但由于这是一个在生产环境中工作多年的现有代码,我无法以任何方式更改它,因此只是尝试做一些事情并让它现在就开始工作。