1

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

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

期望这两者都匹配,但是后者需要全局修饰符来匹配。

  • 8Z-WEXN-CG0H
  • 025-3袋

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

4

1 回答 1

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一部分。

于 2018-02-02T15:02:46.747 回答