对分支重置组的反向引用
A backreference to a branch reset group
免责声明:我不需要另一个 更好 没有重置组的正则表达式。我需要了解为什么 PHP 5
和 PHP 7
.
的输出不同
问题:我尝试使用分支重置组来匹配使用 PHP
的字符串,该字符串由不同分隔符分隔的数字组组成。
$string = '12-34-56-78';
$pattern = '/^\d{2}(?|(---)|(-)|(\.)|(\:))\d{2}\d{2}\d{2}$/';
$matches = preg_match($pattern, $string) === 1;
var_dump($matches);
不幸的是 it works only PHP < 7
。我还检查了 libpcre
的版本,这不是问题的根源。同一个版本libpcre
returns不同PHP
版本结果不同
我找不到任何关于 PHP 7
中更改内容和更改原因的参考资料。
问题:为什么PHP 5
和PHP 7
的输出不同?这是 PHP 7
的预期行为吗?
更新: 好像是bug.
免责声明:我不需要另一个 更好 没有重置组的正则表达式。我需要了解为什么 PHP 5
和 PHP 7
.
问题:我尝试使用分支重置组来匹配使用 PHP
的字符串,该字符串由不同分隔符分隔的数字组组成。
$string = '12-34-56-78';
$pattern = '/^\d{2}(?|(---)|(-)|(\.)|(\:))\d{2}\d{2}\d{2}$/';
$matches = preg_match($pattern, $string) === 1;
var_dump($matches);
不幸的是 it works only PHP < 7
。我还检查了 libpcre
的版本,这不是问题的根源。同一个版本libpcre
returns不同PHP
版本结果不同
我找不到任何关于 PHP 7
中更改内容和更改原因的参考资料。
问题:为什么PHP 5
和PHP 7
的输出不同?这是 PHP 7
的预期行为吗?
更新: 好像是bug.