如何将4个扩展名与regexp匹配?
我已经厌倦了这个:
$returnValue = preg_match('/(pdf|jpg|jpeg|tif)/', 'pdf', $matches);
我不知道为什么我会得到2场比赛?我在正则表达式中错过了什么?
array (
0 => 'pdf',
1 => 'pdf',
)
答案 0 :(得分:5)
I dont know why I get 2 matches
不,你只得到一场比赛。
$matches
有两个条目:
1st entry with index=0
适用于您的正则表达式输入的整个匹配2nd entry with index=1
用于第一个匹配的组,因为正则表达式括在括号中如果您想避免2个条目,可以使用non-capturing group
:
$returnValue = preg_match('/(?:pdf|jpg|jpeg|tif)/', 'pdf', $matches);
或者根本不对它们进行分组:
$returnValue = preg_match('/pdf|jpg|jpeg|tif/', 'pdf', $matches);