[英]PHP regex lookahead not working as expected
我正在尝试匹配版本号,如2.3.3 Release fhf47fh
并删除期间以获得所需的结果233
在preg_match
使用模式/ /\\d+(?=\\.)\\d+(?=\\.)\\d+/
这一时期的前瞻似乎没有按预期发挥作用。
谢谢!
如果您要比较版本,可以剥离空间然后使用version_compare()
。
如果您只想要数字表示,请使用正则表达式简单地使用preg_replace()原始版本字符串中的所有非数字。
$version = '2.3.3 Release';
echo preg_replace('/\D+/', '', $version);
这似乎适用于我的所有测试用例。
preg_replace('/^(\\d+)\\.(\\d+)\\.(\\d+).*$/', '$1$2$3', $version);
我会用这样的东西:
$pattern = '~\d+(?:\.*\d*)*~';
对于您在问题中提供的字符串:
if (preg_match('~\d+(?:\.*\d*)*~', $version, $matches))
echo $matches[0]; // => 2.3.3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.