@@ -140,8 +140,8 @@ protected function doGenerate($variables, $defaults, $requirements, $tokens, $pa
140
140
foreach ($ tokens as $ token ) {
141
141
if ('variable ' === $ token [0 ]) {
142
142
if (!$ optional || !array_key_exists ($ token [3 ], $ defaults ) || null !== $ mergedParams [$ token [3 ]] && (string ) $ mergedParams [$ token [3 ]] !== (string ) $ defaults [$ token [3 ]]) {
143
- // check requirement
144
- if (null !== $ this ->strictRequirements && !preg_match ('#^ ' .$ token [2 ].'$# ' .(empty ($ token [4 ]) ? '' : 'u ' ), $ mergedParams [$ token [3 ]])) {
143
+ // check requirement (while ignoring look-around patterns)
144
+ if (null !== $ this ->strictRequirements && !preg_match ('#^ ' .preg_replace ( ' /\(\?(?:=|<=|!|<!)((?:[^() \\\\ ]+| \\\\ .|\((?1)\))*)\)/ ' , '' , $ token [2 ]) .'$# ' .(empty ($ token [4 ]) ? '' : 'u ' ), $ mergedParams [$ token [3 ]])) {
145
145
if ($ this ->strictRequirements ) {
146
146
throw new InvalidParameterException (strtr ($ message , array ('{parameter} ' => $ token [3 ], '{route} ' => $ name , '{expected} ' => $ token [2 ], '{given} ' => $ mergedParams [$ token [3 ]])));
147
147
}
@@ -195,7 +195,8 @@ protected function doGenerate($variables, $defaults, $requirements, $tokens, $pa
195
195
$ routeHost = '' ;
196
196
foreach ($ hostTokens as $ token ) {
197
197
if ('variable ' === $ token [0 ]) {
198
- if (null !== $ this ->strictRequirements && !preg_match ('#^ ' .$ token [2 ].'$#i ' .(empty ($ token [4 ]) ? '' : 'u ' ), $ mergedParams [$ token [3 ]])) {
198
+ // check requirement (while ignoring look-around patterns)
199
+ if (null !== $ this ->strictRequirements && !preg_match ('#^ ' .preg_replace ('/\(\?(?:=|<=|!|<!)((?:[^() \\\\]+| \\\\.|\((?1)\))*)\)/ ' , '' , $ token [2 ]).'$#i ' .(empty ($ token [4 ]) ? '' : 'u ' ), $ mergedParams [$ token [3 ]])) {
199
200
if ($ this ->strictRequirements ) {
200
201
throw new InvalidParameterException (strtr ($ message , array ('{parameter} ' => $ token [3 ], '{route} ' => $ name , '{expected} ' => $ token [2 ], '{given} ' => $ mergedParams [$ token [3 ]])));
201
202
}
0 commit comments