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

时间:2013-12-04 15:24:57

标签: php regex

我正在尝试匹配2.3.3 Release fhf47fh这样的版本号并删除期间以获得所需的233

结果

将模式/\d+(?=\.)\d+(?=\.)\d+/preg_match

一起使用

这一时期的前瞻似乎没有按预期发挥作用。

谢谢!

3 个答案:

答案 0 :(得分:2)

如果您要比较版本,可以剥离空格,然后使用version_compare()

如果您只想要数字表示,请使用正则表达式简单地使用原始版本字符串中的所有非数字preg_replace()

$version = '2.3.3 Release';
echo preg_replace('/\D+/', '', $version);

答案 1 :(得分:0)

这似乎适用于我的所有测试用例。

preg_replace('/^(\d+)\.(\d+)\.(\d+).*$/', '$1$2$3', $version);

答案 2 :(得分:0)

我会用这样的东西:

$pattern = '~\d+(?:\.*\d*)*~';

对于您在问题中提供的字符串:

if (preg_match('~\d+(?:\.*\d*)*~', $version, $matches))
    echo $matches[0]; // => 2.3.3

Regex101 demo.