具有至少一个连字符的add_rewrite_rules的正则表达式

时间:2016-04-26 19:18:32

标签: regex wordpress url-rewriting expression

我正在使用Wordpress的正则表达式' add_rewrite_rules。

我的目标是将具有单个目录的URL与至少一个破折号匹配并返回该目录。

我能够找到这个:

'^([a-zA-Z0-9]*-[a-zA-Z0-9]*){1,20}/?$' => 'index.php?pagename=location&location=$matches[1]'

如果有连字符,则匹配,但仅返回字符串的结尾(最后一个连字符后面的部分)。

所以:

test/失败了(因为它没有连字符)

te-st/通过,但只返回" st"对于变量。

te-st-ing/通过,但只返回" ing"对于变量。

te-st-ing/a/失败(因为有另一个目录)

我对表达有点迷失,但目标是" te-st"会通过,但会回归整个" te-st"串。我认为对于知道如何处理表达式的人来说,这应该是一个简单的解决方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

为确保至少有一个连字符,您可以使用:

'^([^-/]*-[^/]*)/?$' => 'index.php?pagename=location&location=$matches[1]'

答案 1 :(得分:0)

请尝试这种模式:

^((?:\w+-){1,20}\w*)/?$

REGEX 101 DEMO.