正则表达式匹配具有htaccess重写规则的多个减号的字符串

时间:2018-10-17 16:31:02

标签: php regex .htaccess

用于将abc-def-32a-bb.jpg重定向到bb.jpg的当前代码
RewriteRule ^test/(.+\-)(.+\-)(.+\-)(.+\.(jpg))$ /wordpress/wp-content/uploads/2018/10/$4 [L]
但这是行不通的。我认为这是由于正则表达式问题。看起来(。+)包含破折号。我不确定如何解决此问题。 所以这里是一些用例。
abc-def-12a-bb-sf2.jpg >>> bb-sf2.jpg
abc-def-12a-bb-sf2-fi3.jpg >>> bb-sf2-fi3.jpg

所以实际上我只需要匹配第三个破折号,并且仅需要匹配第三个破折号之后的字符串。在第三个破折号之前,字符串可以包含文本(包括非ASCII字符)和数字。第三个破折号之后的字符串可以包含任何文本和数字(包括破折号和非ASCII字符)。 谢谢

1 个答案:

答案 0 :(得分:0)

这是我的答案。 感谢@ user3783243
RewriteRule ^test/([^-]+-)([^-]+-)([^-]+-)(.+\.(jpg))$ /wordpress/wp-content/uploads/2018/10/$4 [L]
效果很好。