当前位置:  开发笔记 > 编程语言 > 正文

datetime的正则表达式是什么(2008-09-01 12:35:45)?

如何解决《datetime的正则表达式是什么(2008-09-0112:35:45)?》经验,为你挑选了3个好方法。

DateTime的RegEx模式是什么(2008-09-01 12:35:45)?

我收到此错误:

找不到结尾分隔符'^'

使用:

preg_match('(?n:^(?=\d)((?31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|0?[1-9]|1\d|2[0-8])(?[/.-])(?0?[1-9]|1[012])\2(?(1[6-9]|[2-9]\d)\d{2})(?:(?=\x20\d)\x20|$))?(?

给出了这个错误:

警告:preg_match()[function.preg-match]:编译失败:在第19行的E:\ www\index.php中偏移0处不重复

Greg Hewgill.. 58

@Espo:我只想说正则表达式令人难以置信.我不得不编写代码,这些代码对匹配项做了一些有用的事情,例如,如果你想真正找出用户输入的日期和时间.

看起来汤姆的解决方案会更加稳固,因为它简单了几十万倍,并且通过添加一些括号,您可以轻松获得用户键入的值:

(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})

如果您正在使用perl,那么您可以使用以下内容获取值:

$year = $1;
$month = $2;
$day = $3;
$hour = $4;
$minute = $5;
$second = $6;

其他语言也具有类似的功能.请注意,如果要接受单位数月份等值,则需要对正则表达式进行一些小的修改.



1> Greg Hewgill..:

@Espo:我只想说正则表达式令人难以置信.我不得不编写代码,这些代码对匹配项做了一些有用的事情,例如,如果你想真正找出用户输入的日期和时间.

看起来汤姆的解决方案会更加稳固,因为它简单了几十万倍,并且通过添加一些括号,您可以轻松获得用户键入的值:

(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})

如果您正在使用perl,那么您可以使用以下内容获取值:

$year = $1;
$month = $2;
$day = $3;
$hour = $4;
$minute = $5;
$second = $6;

其他语言也具有类似的功能.请注意,如果要接受单位数月份等值,则需要对正则表达式进行一些小的修改.


只是评论说这个正则表达式不会检测日期,月份或时间是否具有优于最大值的值.例如2012-65-65 99:99:99将起作用.除此之外,正则表达式很棒!
显示的正则表达式不用于验证日期.它旨在检查字符串的*syntax*,看它是否可能是一个日期.获取值后,您可以使用常规日期库函数验证给定日期.

2> Tom..:

一个简单的版本,适用于所提到的格式,但不是所有其他的@Espos:

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) 



3> Espo..:

http://regexlib.com/REDetails.aspx?regexp_id=610

^(?=\d)(:( ?: 31((?: 0 [2469] | 11))|(?:?!?30 | 29)(0 2)| 29(?!? ?= 0.0 2.(:( :( ?: 1 [6-9] |?[2-9]\d)?(?:0 [48] | [2468] [048] | [13579] [ 26])|(:( ?: 16 | [2468] [048] | [3579] [26])00)))(?:\ X20 | $))|(?:Λ2 [0-8] | 1\d | 0 [1-9]))([ - /.])(?: 1 [012] | 0 [1-9])\ 1(:???1 [6-9] | [2 -9]\d)\ d\d(:(=\X20\d?)\ X20 | $))(((0 [1-9] | 1 [012]?)(?:?[O- 5]\d){0,2}(\ X20 [AP] M))|([01]\d | 2 [0-3])(:[0-5]\d){1,2}) ?$


此RE验证日期和/或时间模式.2月份的日子也经过了闰年验证.日期:年龄在1/1/1600 - 31/12/9999之间的dd/mm/yyyy或d/m/yy格式.前导零是可选的.日期分隔符可以是匹配的短划线( - ),斜杠(/)或句点(.)时间:在hh:MM:ss AM/PM 12小时格式(12:00 AM - 11:59:59 PM)或hh :MM:ss军事时间格式(00:00:00 - 23:59:59).12小时时间格式:1)小时可能有一个前导零.2)12小时格式的分钟和秒是可选的3)AM或PM是必需的并且区分大小写.军事时间1)必须在小于10的所有小时内具有前导零.2)分钟是强制性的.3)秒是可选的.日期时间:上述格式的组合.首先是日期,然后是空格分隔的时间.ex)dd/mm/yyyy hh:MM:ss


编辑:确保从regexlib.com网站复制RegEx,因为StackOverflow有时会删除/销毁特殊字符.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有