regex - 解析短网址的正则表达式

我的网站上有一个可能的网址列表,例如
1 http://dev.site.com/People/
2 http://dev.site.com/People
3 http://dev.site.com/Groups/
4 http://dev.site.com/Groups
5 http://dev.site.com/
6 http://dev.site.com/[extraword]

我希望能够匹配所有像 6 这样的 url 并将它们重定向到
http://dev.site.com/?Shorturl=extraword

但我不想重定向前 5 个网址

我尝试了类似
((.*)(?!人物|群组))\r

但是有问题。
有什么帮助吗? 谢谢

最佳答案

您应该在开头检查它不是 PeopleGroups:

(?!People|Groups)(.*)

目前,您正在检查正则表达式后面是否没有 PeopleGroups

根据您使用的语言/框架,您可能还需要使用 ^$ 来确保匹配整个字符串:

^(?!People|Groups)(.*)$

您还应该考虑是否要匹配以 People 开头的 url,例如。 http://dev.site.com/People2/。所以这可能会更好:

^(?!(?:People|Groups)(?:/|$))(.*)$

它会检查 PeopleGroups 的否定匹配是否后跟 url 的结尾或斜杠。

您可能希望确保不匹配空字符串,因此请使用 .+ 而不是 .*:

^(?!(?:People|Groups)(?:/|$))(.+)$

如果你想要一个不带任何斜线的单词:

^(?!(?:People|Groups)(?:/|$))([^/]+)$

https://stackoverflow.com/questions/1055362/

相关文章:

php - 修改 url 更短的脚本

javascript - 使用 JSON 使用 Javascript 缩短 URL

url - 短网址冲突。更喜欢项目还是项目列表?

url - 是否有用于将短网址翻译回常规链接的 API?

php - 如何用 PHP 中的 goo.gl 等短 URL 识别域名?

url - 谷歌短网址如何运作?

android - Android 应用程序上的 Urlshortener 和 403 错误

apache - 无法让 mod_rewrite 正确(且不可见地)重写我的 URL?

php - 如何使用短 URL 将用户重定向到自定义表单?

mongodb - 在分布式数据存储中生成短 URL