为这种类型的日期创建正则表达式


Creating a regular expression for this type of dates

首先感谢您花时间阅读我的问题。

我正试图写一个正则表达式来检测不同格式的日期,我发现了许多关于这方面的问题,但没有一个符合我的要求。

下面是我需要检测的一些示例

16 SEPTEMBER 2016 
October 2016
8/2016
11/03/2016

,这是我开始的代码,我有点卡住了,不知道如何从这里继续。我想做的是每个/有不止一个选项,例如月可以是文字或数字年可以是93或1993

这是我的代码

('d'd)+]?.?('d'd)?'w{3,9}?.('d'd'd'd)?|('d'd)?

非常感谢您的提前回复!

我不熟悉PHP,但是由于PHP使用Perl正则表达式函数作为扩展,所以这里有一个Perl程序可以从数组中打印出日期:

#!/usr/bin/perl
@array = ('16 SEPTEMBER 2016', 'October 2016', '8/2016', '18/2016', '11/03/2016', 'NOT A DATE 3534');
for $date (@array){
    if($date =~ /^('d{1,2} [A-Za-z]+ 'd{4}$)|(^[A-Za-z]+ 'd{4}$)|(^'d{1,2}'/'d{4}$)|(^'d{2}'/d{2}'/'d{4}$)/){
        print "$date'n";
    }
}

如果需要,您可以编写稍微复杂一点的程序,根据可接受的月份列表进行检查,而不是匹配任何字母字符串。

如果有帮助请告诉我