ZF2 路由约束使用通配符/运算符


zf2 routing constraints use of wildcards / operators

我已经阅读了ZF2文档zend.mvc.route,我看到以下示例经常使用:星号 * 和 + 在以下约束 '[0-9]+' 和 '[a-zA-Z][a-zA-Z0-9_-]*' 后面做了什么?

return array(
  'router' => array(
    'routes' => array(
      'blog' => array(
        'type' => 'Zend'Mvc'Router'Http'Literal',
        'options' => array(
          'route'    => '/blog',
        ),
        'may_terminate' => true,
        'child_routes' => array(
          'post'  => array(
            'type' => 'Segment',
            'options' => array(
              'route'    => '/:category/page[/:page]',
              'constraints' => array(
                'category' => '[a-zA-Z][a-zA-Z0-9_-]*',
                'page'     => '[0-9]+',
              ),
            ),
          ),
        ),
      ),
    ),
  ),
)

它们是正则表达式,您可以在网上找到很多有关它的文档。

这两个特定字符具有以下含义:

  • * - 量词,表示它后面的标记可能出现 0 次或更多次
  • + - 与*相同,但表示 1 次或多次

[...]表达式是字符类。

  • [0-9]代表任何一个数字字符
  • [a-zA-Z] 代表任何小写或大写字母的字符

您可以组合这些字符类,如您在[a-zA-Z0-9_-]中看到的那样,可以是字母、数字、下划线或连字符。

您也可以将字符类与量词组合在一起:

  • [0-9]+表示一个或多个数字
  • [a-zA-Z][a-zA-Z0-9_-]*表示一个小写或大写字母,后跟任意数量的字母、数字、_-