求一个日期的正则表达式

uzi 2007-01-14 11:40:23
需要从文档里面提取出日期,求个正则表达式,能符合如下格式:
2007-1-2
2006-12-30
2007-01-02
2007-1-12
其中的"-"还可以用"/"取代,自己折腾了好久实在搞不定啊。
如果一个正则表达式实在搞不定,也可以用多个
...全文
469 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
icemanlikefish 2007-01-15
  • 打赏
  • 举报
回复
提取是不太好正则表达式提取的.但是,可以用力检测一下.
我用的js代码是这样的:
function getd(sd){
re=/^[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}$/;
if(re.exec(sd)==null)
{
alert("Err");
}else{
alert("OK");
}
}
getd("2005-2-234");
iasky 2007-01-15
  • 打赏
  • 举报
回复
要看你的文档是什么呢
ishion 2007-01-15
  • 打赏
  • 举报
回复
帮顶,关注
懒得去死 2007-01-15
  • 打赏
  • 举报
回复
<?php
$str1 = '2007-1-15';
$str2 = '2007-01-15';
preg_match("/^[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}$/is",$str1,$match1);
preg_match("/^[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}$/is",$str2,$match2);
print_r($match1);
print_r($match2);
?>

===============

---------- David程序调试 ----------
Array
(
[0] => 2007-1-15
)
Array
(
[0] => 2007-01-15
)

Output completed (0 sec consumed) - Normal Termination
bjbs_270 2007-01-15
  • 打赏
  • 举报
回复
<?php
$str = "2007-1-2,2006/12/30,2007-01-02,2007-1-12";
$patten = "/[0-9]{4}(\/|-)[0-9]{1,2}(?:\\1)[0-9]{1,2}/";
preg_match_all($patten,$str,$arr);
print_r($arr);
?>

结果:
---------- Debug php ----------
Array
(
[0] => Array
(
[0] => 2007-1-2
[1] => 2006/12/30
[2] => 2007-01-02
[3] => 2007-1-12
)

[1] => Array
(
[0] => -
[1] => /
[2] => -
[3] => -
)

)

Output completed (0 sec consumed) - Normal Termination
swswssw 2007-01-15
  • 打赏
  • 举报
回复

如果要进行严格的验证,比如说1月有31天,闰年2月28天等等这样的验证,就比如烦,不过估计你这里不会要这么严格的,以前看过一个招说是超强的日期正则,你可以参考一下
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$
swswssw 2007-01-15
  • 打赏
  • 举报
回复
如果不考虑月分和天数的严格约束的话:

^[12]\d{3}[-/](0[1-9]|1[0-2]?|[2-9])[-/](0[1-9]|[12][0-9]?|3[01]?|[4-9])$

上面这个是按你的格式要求写的并没有考虑1000年以下和3000年以上的,也没有考虑月分和天数间的验证等,应该可以满足不是很严格的日期匹配场合,你只是在文档里提取的话已经足够了
hymxtang 2007-01-15
  • 打赏
  • 举报
回复
学习~~

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧