ZF2 分段路由约束正则表达式
ZF2 segmented route constraint regex
我正在开发 ZF2 应用程序,我需要这样的路由:
'storage-deliver' => array(
'type' => 'Segment',
'options' => array(
'route' => '/storage/:uuid/:path',
'constraints' => array(
'uuid' => '[a-zA-Z0-9-]*',
'path' => '[a-zA-Z0-9-_\./\+]*'
),
'defaults' => array(
'controller' => 'StorageController',
'action' => 'deliver',
)
)
)
路由应该能够匹配 uuid
约束后的任何路由。
示例:
/storage/0e529c8b-2403-40c1-a5bf-c6819e992079/some.file
/storage/0e529c8b-2403-40c1-a5bf-c6819e992079/an/undefined/depth/path/to/some.file
我知道 uuid 约束不正确,但这与我现在的问题无关。问题是定义的约束 path
。它应该能够匹配给定 url 的其余部分。
到目前为止,给定的定义 [a-zA-Z0-9-_\./\+]*
有效(至少对于我使用的示例而言),但我很确定有一种方法可以以更好的方式完成它(以及一种方式真正匹配所有有效的可能性!)。
我在其他地方找到了以下路线示例:
/storage/:uuid/:path{-}
首先一切看起来都不错,但 path
并非在所有情况下都匹配。
欢迎任何帮助!
谢谢!
要匹配除换行符以外的任何字符,您始终可以依赖贪心点匹配模式:
.*
这个模式可以匹配一个空字符串,所以,如果你不想这样,用 +
量词(意思是 一次或多次出现).
我正在开发 ZF2 应用程序,我需要这样的路由:
'storage-deliver' => array(
'type' => 'Segment',
'options' => array(
'route' => '/storage/:uuid/:path',
'constraints' => array(
'uuid' => '[a-zA-Z0-9-]*',
'path' => '[a-zA-Z0-9-_\./\+]*'
),
'defaults' => array(
'controller' => 'StorageController',
'action' => 'deliver',
)
)
)
路由应该能够匹配 uuid
约束后的任何路由。
示例:
/storage/0e529c8b-2403-40c1-a5bf-c6819e992079/some.file
/storage/0e529c8b-2403-40c1-a5bf-c6819e992079/an/undefined/depth/path/to/some.file
我知道 uuid 约束不正确,但这与我现在的问题无关。问题是定义的约束 path
。它应该能够匹配给定 url 的其余部分。
到目前为止,给定的定义 [a-zA-Z0-9-_\./\+]*
有效(至少对于我使用的示例而言),但我很确定有一种方法可以以更好的方式完成它(以及一种方式真正匹配所有有效的可能性!)。
我在其他地方找到了以下路线示例:
/storage/:uuid/:path{-}
首先一切看起来都不错,但 path
并非在所有情况下都匹配。
欢迎任何帮助!
谢谢!
要匹配除换行符以外的任何字符,您始终可以依赖贪心点匹配模式:
.*
这个模式可以匹配一个空字符串,所以,如果你不想这样,用 +
量词(意思是 一次或多次出现).