将正则表达式标志传递给 Phalcon 微应用程序中的路由
Pass regex flags to route in Phalcon micro app
我正在尝试在 Phalcon Micro App 中定义路由,但不知道如何将全局标志传递给正则表达式。这是我的路线
/api/v1/product/detail/{sku:([\w\d]+-?)*[\w\d]*}
希望这两个都匹配,但是后者需要全局修饰符才能匹配。
- 8Z-WEXN-CG0H
- 025-3袋
如何在正则表达式中指定标志?我没有在文档中看到这一点。
只要您不想在第一次匹配时停止,就会设置全局修饰符,因为您一次只有一个匹配值,所以您也不需要 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
作为匹配的一部分。
我正在尝试在 Phalcon Micro App 中定义路由,但不知道如何将全局标志传递给正则表达式。这是我的路线
/api/v1/product/detail/{sku:([\w\d]+-?)*[\w\d]*}
希望这两个都匹配,但是后者需要全局修饰符才能匹配。
- 8Z-WEXN-CG0H
- 025-3袋
如何在正则表达式中指定标志?我没有在文档中看到这一点。
只要您不想在第一次匹配时停止,就会设置全局修饰符,因为您一次只有一个匹配值,所以您也不需要 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
作为匹配的一部分。