php里判断字符串是否为日期格式的正则表达式

 更新时间:2013年8月3日 22:48  点击:1214
$time='2013-8-3';
$result=preg_match("/^[0-9]{4}(\-|\/)[0-9]{1,2}(\\1)[0-9]{1,2}(|\s+[0-9]{1,2}(|:[0-9]{1,2}(|:[0-9]{1,2})))$/",$time);
if($result)
    echo('正确的日期格式');
else
    echo('错误的日期格式');

以上匹配表达式使得如下格式日期都成立: 
0000-00-00 
0000/00/00 
0000-00-00 00 
0000/00/00 00 
0000-00-00 00:00 
0000/00/00 00:00 
0000-00-00 00:00:00 
0000/00/00 00:00:00 
对次表达式的分析: 
/^[0-9]{4}(\-|\/)[0-9]{1,2}(\-|\/)[0-9]{1,2}(|\s+[0-9]{1,2}(|:[0-9]{1,2}(|:[0-9]{1,2})))$/ 
/是表达式开始符 最后面的/是表达式的结束符 
^字符串的开始,即以***开始 
$表示字符串的结尾,即表示已***结尾 
|表示或者 
()表示一个单元 
[0-9]{4}匹配一个4位数, 
(\-|\/)匹配一个“-”号或者一个“/”号, 
[0-9]{1,2}匹配一个1位数或者2位数, 
(\ \1)表示第一个括号里的内容,第一个括号,即(\-|\/) 
那么合起来解释,前一部分:^[0-9]{4}(\-|\/)[0-9]{1,2}(\\1)[0-9]{1,2}匹配年月日 
是已一个4位有效数字开始,后面跟2个2位数字,3个数字间用“-”或者“/”分割 
这 里要注意,:^[0-9]{4}(\-|\/)[0-9]{1,2}(\\1)[0-9]{1,2}和:^[0-9]{4}(\-|\/)[0-9] {1,2}(\-|\/)[0-9]{1,2}是不一样的,区别在于:2个分割符前者只能有1种分割符,“-”或者“/”,后者则可以有2种,即2个位置 的分割符可以不一样,比如:2008-11/24这个日期在前一种匹配模式下不成立,在后者的匹配模式下成立 
(|\s+ [0-9]{1,2}(|:[0-9]{1,2}(|:[0-9]{1,2})))这个被一个括号括起,表示整体是一个单元,内部有多个“|”符号,这个 符号要看其左右2边,左边第一个“|”的左边是空,右边是\s+[0-9]{1,2}(|:[0-9]{1,2}(|:[0-9]{1,2})),表示: 要么为空,要么匹配\s+[0-9]{1,2}(|:[0-9]{1,2}(|:[0-9]{1,2})); 
\s+匹配一个或多个空格, 这个位置正是年月日和时分秒之间的分割; 
[0-9]{1,2}匹配一个1位或者2位的数字 ,这个位置正是小时; 
上面连起来就是如果存在时分秒,则必定以有空格和小时数, 
(|:[0-9]{1,2}(|:[0-9]{1,2}))后面解释其实同上 ,合起来就是,如果存在时分数,则必定有“:”和时分值,如果存在秒数,则必定有“:”和秒数 
因为最后2个时分数秒数的形式完全一样,所以可以进一步缩短代码: 

[!--infotagslink--]

相关文章

  • PHP正则表达式取双引号内的内容

    取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • php计算两个日期相差天数的方法

    本文实例讲述了php计算两个日期相差天数的方法。...2015-03-15
  • php 验证只能输入汉字、英语、数字的正则表达式

    正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • vue开发之moment的介绍与使用

    moment是一款多语言支持的日期处理类库, 在vue中如何使用呢?这篇文章主要给大家介绍了关于vue之moment使用的相关资料,需要的朋友可以参考下...2021-05-13
  • 非常全面的php日期时间运算汇总

    实例讲解之前,先来介绍几个核心函数: mktime 函数 mktime() 函数返回一个日期的 Unix 时间戳。 参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。 参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。...2015-11-08
  • PHP正则表达式匹配验证提取网址URL实例总结

    网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
  • C#实现将字符串转换成日期格式的方法

    这篇文章主要介绍了C#实现将字符串转换成日期格式的方法,涉及C#操作时间及字符串的相关技巧,非常简单实用,需要的朋友可以参考下...2020-06-25
  • php根据日期或时间戳获取星座信息和生肖等信息

    分享一个利用php根据日期或时间戳获取相应的干支纪年,生肖和星座信息的函数方法,具体函数代码以及使用方法如下: /** 判断干支、生肖和星座 */ function birthext($birth){ if(strstr($birth,'-')===false&&strlen($bi...2015-10-21
  • 正则表达式中两个反斜杠的匹配规则详解

    这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • C#正则表达式使用方法示例

    这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
  • JS中使用正则表达式g模式和非g模式的区别

    这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
  • java8时间 yyyyMMddHHmmss格式转为日期的代码

    这篇文章主要介绍了java8时间 yyyyMMddHHmmss格式转为日期的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-17
  • 常用C#正则表达式汇总介绍

    c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
  • JavaScript利用正则表达式替换字符串中的内容

    本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
  • C#判断日期是否到期的方法

    这篇文章主要介绍了C#判断日期是否到期的方法,是C#程序设计中非常实用的技巧,需要的朋友可以参考下...2020-06-25