我正在尝试匹配2.3.3 Release fhf47fh
这样的版本号并删除期间以获得所需的233
将模式/\d+(?=\.)\d+(?=\.)\d+/
与preg_match
这一时期的前瞻似乎没有按预期发挥作用。
谢谢!
答案 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