我正在尝试在Phalcon Micro App中定义路由,但无法弄清楚如何将全局标志传递给正则表达式。这是我的路线
/api/v1/product/detail/{sku:([\w\d]+-?)*[\w\d]*}
期望这两者匹配,但是后者需要全局修饰符匹配。
如何在正则表达式中指定标志?我没有在文档中看到这个。
答案 0 :(得分: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
作为匹配的一部分。