PHP正则表达式在时间戳上发出preg_match()
正则表达式面临的问题PHP正则表达式在时间戳上发出preg_match(),php,regex,Php,Regex,正则表达式面临的问题 2013-05-29 15:15:12string我正在匹配/^(\d{4})(\d{2})(\d{2})({s}+(\d{2}):(\d{2}):(\d{2}):(\d{2}))?$/与preg{u匹配,但不验证。。。它的给出false 什么应该是regexp来匹配2013-05-29 15:15:12或2013-05-29模式。{\s}+是错误的。它应该是\s+。花括号仅用作量词或文字。让我们先看看您的正则表达式。在日期和匹配的时间之间{\s}+。这意味着“字符{,后跟
2013-05-29 15:15:12
string我正在匹配/^(\d{4})(\d{2})(\d{2})({s}+(\d{2}):(\d{2}):(\d{2}):(\d{2}))?$/
与preg{u匹配,但不验证。。。它的给出false
什么应该是regexp来匹配2013-05-29 15:15:12或2013-05-29模式。{\s}+
是错误的。它应该是\s+
。花括号仅用作量词或文字。让我们先看看您的正则表达式。在日期和匹配的时间之间{\s}+
。这意味着“字符{
,后跟空格/制表符,后跟一个或多个}
”
将{\s}
替换为?:\s+
(一个与一个或多个空格/制表符匹配的非捕获组),以便完整的正则表达式
^(\d{4})-(\d{2})-(\d{2})(?:\s+(\d{2}):(\d{2}):(\d{2}))?$
您确定字符串前后没有多余的空格吗?您花时间演示了它,不公平地将您拖在了后面+1.做什么?:在^(\d{4})-(\d{2})-(\d{2})(?:\s+(\d{2}):(\d{2}):(\d{2}):(\d{2}))中做什么?$@PoonamBhatt它指定了一个非捕获组
,这意味着我们在匹配时不会保存匹配(现在您只有6个匹配项,年
,月
,日
,小时
,分钟
和秒
,而不是将小时:分钟:秒
作为匹配项。)尝试查看演示并删除?:
部分,看看会发生什么。@PoonamBhatt检查并查看右侧匹配的差异。