【发布时间】:2017-02-09 09:05:14
【问题描述】:
我有一个包含一组时间戳的文件,我正在寻找一种方法来过滤它们并使用正则表达式从格式良好的格式中找到错误的格式:
$line = array(20171203124500,20150120183045,20140621064431);
$args = array('filter' => FILTER_VALIDATE_REGEXP,
'options' => array('regexp' => 'REGEX-HERE'), );
$result = filter_var_array($line, $args);
var_dump($result);
我也想检查一下日期是否正确:
- 4 月 31 日的日期不应匹配
- 日期 29/02/2003 不应该匹配,而 29/02/2004 应该匹配。
我有这样的表达:
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\/(?:0?[1-9]|1[0-2]))\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:(?:(?:31\/0?[13578]|1[02])|(?:(?:29|30)\/(?:0?[1,3-9]|1[0-2])))\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:29\/0?2\/(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26]))))$
但它是针对这种格式的日期给出的:31/01/2001
此表达式验证巴西 d/m/y 格式的日期(从 1600 年 1 月 1 日 - 9999 年 12 月 31 日)。对给定月份的天数进行验证,并且 年。闰年适用于从 1600 到 9999 的所有 4 位数年份。 日期和月份必须是 1 或 2 位数字,并且可以有前导零。 年份必须是 4 位数年份,介于 1600 和 9999 之间。日期分隔符 必须是斜杠 (/)
如何调整这个正则表达式以匹配我寻找的格式:YYYYmmddHHMMSS
【问题讨论】:
-
只交换日期和年份部分。
-
@Toto 这个问题不是重复的,你提到的那个根本不是我要找的
-
@JavaQueen:正则表达式取自my old Java answer,没有任何参考。我不会为此给 Rarasen 任何代表点数。我会完全删除这篇文章。