Php预匹配问题不起作用

Php预匹配问题不起作用,php,preg-match,Php,Preg Match,我正在尝试找到一个php preg_匹配,可以匹配: “2-20至2-25” 从本文中: 用户级别2-20至2-25未就绪 我试过了 preg_match("/([0-9]+) to ([0-9]+)/", $vars[1] , $matchesto); 但结果是: “20比2” 感谢您的帮助。这是因为[0-9]+匹配一个或多个数字,但不匹配连字符(-) 试试这个: $pattern = '~([0-9]+-[0-9]+) to ([0-9]+-[0-9]+)~Ui'; preg_match(

我正在尝试找到一个php preg_匹配,可以匹配:

“2-20至2-25”

从本文中:

用户级别2-20至2-25未就绪

我试过了

preg_match("/([0-9]+) to ([0-9]+)/", $vars[1] , $matchesto);
但结果是:

“20比2”


感谢您的帮助。

这是因为
[0-9]+
匹配
一个或多个数字,但不匹配连字符(
-

试试这个:

$pattern = '~([0-9]+-[0-9]+) to ([0-9]+-[0-9]+)~Ui';
preg_match($pattern, $vars[1] , $matchesto);
您可以使用“\d”匹配数字:

<?php
$str = 'user levels 2-20 to 2-25 not ready';
$matches = array();
preg_match('/(\d+-\d+) to (\d+-\d+)/', $str, $matches);
var_dump($matches);

你的模式几乎是正确的;只需包含破折号并调整捕获组:

([-0-9]+ to [-0-9]+)
例如:

([-0-9]+ to [-0-9]+)