我正在进行NGINX重写。如果存在,我想匹配,如果它不只是采取什么并将其设置为2美元。用于配置文件URL上的NGINX重写的正则表达式
rewrite ^/profile/(([a-zA-Z0-9_-]*-u)|(^\s*$))([0-9]+)$ /profile/$2/ redirect;
这不是很正常,现在它会匹配/ a-u4 /但我希望它也匹配/ 4 /。
这是可能的正则表达式?
我正在进行NGINX重写。如果存在,我想匹配,如果它不只是采取什么并将其设置为2美元。用于配置文件URL上的NGINX重写的正则表达式
rewrite ^/profile/(([a-zA-Z0-9_-]*-u)|(^\s*$))([0-9]+)$ /profile/$2/ redirect;
这不是很正常,现在它会匹配/ a-u4 /但我希望它也匹配/ 4 /。
这是可能的正则表达式?
是的,这是可能的。我从你想匹配的评论理解/型材/名称-U000 /或/型材/ 000/
此正则表达式将工作:
^/profile/([a-zA-Z0-9_-]+-u)?([0-9]+)/$
这使任何数字匹配(000份)和在到2美元。
制造的完整的规则:
rewrite ^/profile/([a-zA-Z0-9_-]+-u)?([0-9]+)/$ /profile/$2/ redirect;
但不要用它!它只会创建一个重定向周期,如果这是你想要做的。但我需要......
澄清
我理解这可能需要调整到正是你想要什么,我不清楚你想捕捉到$ 2的东西。让我知道,我会更新我的答案。如果它只是您想要捕获的数字,那么您想要将/ 000000 /重定向到自身而无需更改,因此无需执行此操作,只需/ profile/Name-u000 /需要重定向。让我知道如果我错过了什么。
正则表达式的工作原理
^/profile/
匹配字符串后面/型材/开始。
([a-zA-Z0-9_-]+-u)?
可选地匹配1个或多个字母,数字,下划线或破折号,后跟-u并将其捕获到1美元。括号后面的问号是什么使其成为可选项。请记住,第一部分(-u之前)甚至可以用下划线或破折号开始或结束,您可能会也可能不想要。
([0-9]+)
匹配1个或更多数字并捕获到2美元。
/$
用字符串末尾的正斜杠结束匹配。
不确定为什么答案已被标记。如果出现问题,我们将不胜感激。 – SuperDuperApps
'(^ \ s * $)'从不匹配(它匹配一个字符串的开始,0+空格,字符串的结尾 - 不可能匹配字符串中的这样的模式),您可以将其删除。尝试使用'^/profile /([a-zA-Z0-9 _-] * - u)?([0-9] +)$'替换为'/ profile/$ 1 /' –
当我查阅它时,说这就是你如何匹配空白。 – Iscariot
不,你不懂锚。删除'^'和'$',然后用'\ s *'匹配0+空格。 –