为此类日期创建正则表达式

时间:2016-09-23 11:47:12

标签: php regex date

我首先要感谢您抽出宝贵时间阅读我的问题。

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

以下是我需要检测的一些例子

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)?

非常感谢您提前回复!

1 个答案:

答案 0 :(得分:0)

我不熟悉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";
    }
}

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

如果有帮助,请告诉我。