我需要一个可以匹配日期的正则表达式。但是,日、月和年的分隔符可能不同。它可能是一个点,一个破折号,一个斜线......
我所拥有的是
^([012]?[1-9]|3[01])[\\.\\-\\/\\\\](0?[1-9]|1[012])[\\.\\-\\/\\\\](19|20)\\d{2}$
所以是
([012]?[1-9]|3[01]) --the day part
(0?[1-9]|1[012]) --the month part
(19|20)\\d{2} --the year part
分隔符重复两次,根据我当前的表达式[\\.\\-\\/\\\\]
,可能会有所不同......我的意思是,它匹配,比如说:
01.01-1986
虽然我希望它仅在有两个点、两个破折号或两个分隔符部分允许的情况下才匹配……所以上面给出的示例不应该匹配。
我想它可以通过正则表达式的分组模式以某种方式完成。但我不知道如何应用它。另外我发现自己完全不知道如何用谷歌搜索这个......
谁能把我推向正确的方向?
PS:我最近观看了SO 正则表达式来匹配有效日期......在我的情况下,我明白它会匹配没有它的月份中的第 31 天,以及 2 月缺席的所有日子......这就是全部好吧...
在 Java 中,我目前使用以下代码:
String value = "31/12/2086";
String pattern = ...
boolean result = value.matches(pattern);
在 C# 中
string value = "01.01.2014";
string pattern = "";
bool result = Regex.IsMatch(value, pattern);
如果有办法做我想做的事,如果该解决方案适用于这两种语言,那就太好了…… Java 和 C# 正则表达式是否兼容?