我首先要感谢您抽出宝贵时间阅读我的问题。
我正在尝试编写一个正则表达式来检测不同格式的日期,我发现了许多关于此的问题但没有一个符合我的要求。
以下是我需要检测的一些例子
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)?
非常感谢您提前回复!
答案 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";
}
}
如果需要,您可以编写一个稍微复杂的程序,检查可接受的月份列表,而不是匹配任何字母串。
如果有帮助,请告诉我。