修改正则表达式以匹配日期与序号“st”,“nd”,“rd”,“th”

时间:2011-05-23 09:47:47

标签: regex

我在Modify regex to match dates with ordinals "st", "nd", "rd", "th"看到了问题的答案 但我需要它采用Perl格式。

这也只是解析2004年1月1日。我需要一个可以解析2004年1月1日,2004年1月1日或2004年1月1日的正则表达式。我对正则表达式很新,所以不知道如何得到它。

这仅适用于英语日期,需要在1月/ 1月。

任何信息都会有所帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

这个怎么样:

my @strs = ('1 jan 2004','1st Jan 2004','1st of Jan 2004');
for(@strs)
{
   if(m/^\s*(\d+)(?:[a-z]{2})?\s+(?:of\s+)?([a-z]{3})\s+(\d{4})/i)
   {
        my($date,$month,$year) = ($1,$2,$3);
        print "matched $date $month $year\n";
   }
}

这不会验证字符串是否为有效日期(即1月43日),但检查可以 添加$ date,$ month,$ year变量。