我有一个类似
的字符串<?php
$string = Monday & SUNDAY 11:30 PM et/pt;
//or
$string = Monday 11:30 PM et/pt;
?>
我想在两个案例中获取'11:30 PM',我想我无法使用爆炸,所以这将是正则表达式,也请告诉我一些非常好的学习正则表达式。 提前致谢
答案 0 :(得分:1)
对于原始方法的若干修复,会向下面的评论者提供信用,但仍有一些未解决的问题。
如果您想要固定的2小时格式:(0[0-9]|1[0-2]):[0-5]\d [AP]M
答案 1 :(得分:1)
有效匹配twelve-our-clock我会使用如下所示的正则表达式。十二小时的时间从01:00到12:59:
$regex = "#\b(?:0[0-9]|1[0-2]):[0-5][0-9] [AP]M\b#i";
答案 2 :(得分:0)
Malik,要检索您可能使用预制库正则表达式的时间/日期,请搜索此查询:http://regexlib.com/Search.aspx?k=digit&c=5&m=-1&ps=20
基本上你的时间字段相似,(具有相同的分隔符':'),我建议在输入字符串中匹配简单的正则表达式:\d{1,2}:\d{2} [PA]M
。如果你想让它不区分大小写,请使用 i ,pattern modifier。
有关正则表达式的基础知识,欢迎阅读here。
我给你这个PHP的匹配函数( i 后第二个斜杠(/)使模式不区分大小写:am, AM, Am, aM
将是相同的):
preg_match('/\d{1,2}:\d{2} [PA]M/i', $string, $time);
print ($time);
如果在数字之后可能没有空格(例如上午11:30)或者超过一个空格字符,则正则表达式应如下所示:
/\d{1,2}:\d{2}\s*[PA]M/i
答案 3 :(得分:-1)
此代码将为您提供 11:30 PM
preg_match('$([0-9:]{3,5}) ([AP])M$','Monday & SUNDAY 11:30 PM et/pt',$m);
echo $m['1']." ".$m['2']."M";