如何使用正则表达式匹配字符串中的PHP time()或microtime()?

如何使用正则表达式匹配字符串中的PHP time()或microtime()?,php,regex,time,microtime,Php,Regex,Time,Microtime,我目前有一个regex命令,它以字符串形式匹配php时间: preg_match( '/([a-z]+)_([0-9]{9,})\.jpg/i', $aName, $lMatches ); 如何修改它以使其与同一匹配中的microtime()匹配 示例: foobar_1453887550.jpg(匹配) foobar_1453887620.8717.jpg(比赛) foobar_123.jpg(不匹配) foobar_adsf123123.jpg(不匹配)使用?添加可选组: preg_mat

我目前有一个regex命令,它以字符串形式匹配php时间:

preg_match( '/([a-z]+)_([0-9]{9,})\.jpg/i', $aName, $lMatches );
如何修改它以使其与同一匹配中的microtime()匹配

示例:

foobar_1453887550.jpg(匹配)

foobar_1453887620.8717.jpg(比赛)

foobar_123.jpg(不匹配)


foobar_adsf123123.jpg(不匹配)

使用
添加可选组:

preg_match( '/([a-z]+)_([0-9]{9,})(\.[0-9]{4,})?\.jpg/i', $aName, $lMatches );
这里的
(\.[0-9]{4,})
是一个可选组,可以在字符串中显示也可以不显示

考虑到@trincot remark,如果结束零在毫秒内不出现,您可以将可选组更改为
(\.[0-9]+)?

preg_match( '/([a-z]+)_([0-9]{9,})(\.[0-9]+)?\.jpg/i', $aName, $lMatches ); 

首先,上面的正则表达式不应与第二个示例相匹配:foobar_1453887620.8717.jpg

现在,如果您想让它匹配小于9的数字,那么在“_”之后,您需要根据需要修改
{9,}

{9,}
匹配先前的匹配(在本例中为数字
[0-9]
),重复九次或以上

  • 将第二个示例(foobar_1453887620.8717.jpg)包含在 匹配,您的正则表达式应为:
    /([a-z]+)\[0-9.]{9,})\.jpg/i
  • 要匹配您的第三个示例(foobar_123.jpg):
    /([a-z]+)\[0-9]{3,})\.jpg/i

  • 要匹配您的第四个示例(foobar_adsf123123.jpg):
    /([a-z]+)([0-9\w]{3,})\.jpg/i

  • 要匹配以上所有示例:
    /([a-z]+)\[0-9.[w]{3,})\.jpg/i


提供一些示例。@AvinashRaj示例提供时间从哪个日期开始?19700101好吗?像这样?([a-z]+)(([0-9]{9,})(\[0-9]{1,}){0,1}\。jpgI不会假定小数部分必须由4位数字组成。如果有结尾的零,它们将不会被包括在内。@trincot How's then-
{1,4}
?如果微时间确实最多有4位小数,那就是它了,但OP不清楚限制是什么。我只会使用
+