繁体   English   中英

PHP正则表达式预测不能按预期工作

[英]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

Regex101演示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM