pcre捕获组中的优先顺序?

时间:2016-10-04 15:20:46

标签: php regex preg-match pcre

我有一个正则表达式,用于捕获字符串中的电话号码:

[1.-][\s.-]\d{3}[\s.-]\d{3}[\s.-]\d{4}[\s]?(.[or]?.[1.-][\s.-]\d{3}[\s.-]\d{3}[\s.-]\d{4}[\s])?

除了捕获字符串中的标准电话号码(例如1-222-3333)之外,此表达式还需要匹配1-800-0000 or 1-234-5678之类的字符串。 It seemingly works as intended

然而,PHP的preg_match功能似乎只与初始电话号码匹配,一旦发现忽略了模式的可选or部分

$matches = array();
$string = '1-208-687-4348 or 1-509-892-5779';
preg_match('/[1.-][\s.-]\d{3}[\s.-]\d{3}[\s.-]\d{4}[\s]?(.[or]?.[1.-][\s.-]\d{3}[\s.-]\d{3}[\s.-]\d{4}[\s])?/', $string, $matches);
print_r($matches); // matches[0] => 1-208-687-4348

我的正则表达式遗漏了什么?我是否必须为捕获组指定优先顺序?

0 个答案:

没有答案