正则路由也就是采用正则表达式定义路由的一种方式,依靠强大的正则表达式,能够定义更灵活的路由规则。
路由表达式支持的正则定义必须以“/”开头,否则就视为规则表达式。也就是说如果采用:
'#^blog/(d+)$#' => 'Blog/read/id/:1'
方式定义的正则表达式不会被支持,而会被认为是规则表达式进行解析,从而无法正确匹配。
下面是一种正确的正则路由定义:
'/^new/(d{4})/(d{2})$/' => 'News/achive?year=:1&month=:2',
对于正则表达式中的每个变量(即正则规则中的子模式)部分,如果需要在后面的路由地址中引用,可以采用:1、:2这样的方式,序号就是子模式的序号。
正则定义也支持函数过滤处理,例如:
'/^new/(d{4})/(d{2})$/' => 'News/achive?year=:1|format_year&month=:2',
其中 year=:1|format_year 就表示对匹配到的变量进行format_year函数处理(假设format_year是一个用户自定义函数)。
更多的关于如何定义正则表达式就不在本文的描述范畴了。