包含多个(通配符)URI,在正则表达式中排除子域

时间:2013-12-03 15:53:31

标签: php regex wildcard

希望您能帮我格式化正确的RegEx。

我想:


1)将所有流量包括在domain.com(。*)

  • 排除所有子域名
  • 除了特定URI sub.domain.com/folder(。*)
  • 的所有流量外

2)将所有流量包含在特定URI sub.extdomain.com/folder(..*)

一些例子:

包括:

  • domain.com
  • domain.com/team
  • domain.com/blog
  • 具体:hello.domain.com/bonjour
  • 具体:bye.extdomain.com/aurevoir/salut

排除:

  • hello.domain.com
  • bye.domain.com
  • 所有其他子域名&其他网站

已尝试过以下内容,但仍包含子域名:

(domain\.com|sub\.domain\.com/folder(.*)|sub\.domain\.com/folder(.*))

3 个答案:

答案 0 :(得分:1)

正则表达式/domain\.com/将匹配任何子域,因为它将匹配部分字符串。 使用/^domain\.com/仅捕获以“domain.com”开头的字符串(无子域)。

请注意,这假设您从网址(http://)中删除了协议。

您发布的RegEx的第二部分与第三部分相同 - 我假设您的意思是两个特殊情况 - 他们也需要“^”开头

最后不需要(。*) - 如果没有它,它将匹配部分字符串。

(^domain\.com|^hello\.domain\.com\/bonjur|\^bye.extdomain\.com\/folder(.*))

解释 - 接受

  • ^domain\.com - 所有以“domain.com”开头的网址(无子域名)
  • ^hello\.domain.com - 所有以子域名“hello.domain.com”开头的网址
  • \^bye.extdomain\.com - 所有以“bye.extdomain.com”开头的网址

可选 - 因为所有3个组件都以相同的方式启动,您可以提取公共前缀^

^(domain\.com|hello\.domain\.com\/bonjur|bye\.extdomain\.com\/folder2)

请参阅此网站以获取有关正则表达式的帮助:http://www.regexper.com/#%5E(domain%5C.com%7Chello%5C.domain%5C.com%5C%2Fbonjur%7Cbye%5C.extdomain%5C.com%5C%2Ffolder2)

答案 1 :(得分:0)

我在正则表达式的开头添加了一个“^”,要求字符串以domain.com开头。 在第二个条款中,它允许domain.com之后的文件夹。 第三个子句允许子域上的任何内容,如果它具有“/”后跟一些文本。

(^domain\.com$|^domain\.com\/\w*|\w*\.domain\.com\/\w*)

答案 2 :(得分:0)

我建议使用这个正则表达式:

'#\b(?:domain\.com|hello\.domain\.com/bonjour|bye\.extdomain\.com/aurevoir/salut)\b#i'