将正则表达式标志传递给 Phalcon 微应用程序中的路由

Pass regex flags to route in Phalcon micro app

我正在尝试在 Phalcon Micro App 中定义路由,但不知道如何将全局标志传递给正则表达式。这是我的路线

/api/v1/product/detail/{sku:([\w\d]+-?)*[\w\d]*}

希望这两个都匹配,但是后者需要全局修饰符才能匹配。

如何在正则表达式中指定标志?我没有在文档中看到这一点。

只要您不想在第一次匹配时停止,就会设置全局修饰符,因为您一次只有一个匹配值,所以您也不需要 g 修饰符。

让我们举个例子。假设你当前的输入字符串是这样的:

/api/v1/product/detail/8Z-WEXN-CG0H
/api/v1/product/detail/025-3bags

然后你的正则表达式在第一次匹配时停止,因为没有应用 g 但如果你的输入字符串一次是其中之一:

/api/v1/product/detail/8Z-WEXN-CG0H
/api/v1/product/detail/025-3bags

它有效,所以您根本不需要 g。我建议您将正则表达式修改为以下简化形式:

\w+(?:-\w+)*

因为 \w 包括 \d 作为匹配的一部分。