正则表达式匹配 URL 除了一些使用 Look Ahead 的网站

Regex to match URL except for some websites using Look Ahead

我正在尝试创建一个正则表达式来过滤掉 url 某些网站除外。

(?!(.*mysite))((www|http|.*com).*)

https://regex101.com/r/Su5zlB/9

我很难排除某些网站。我试过向前看,但它似乎不起作用。我希望它的行为类似于 AND 操作,因此如果第一个条件为假,它不应继续到下一个条件。有任何想法吗?

如果您只想要求 URL 在其中包含 httpwwwcom,但主机部分不包含 mysite , 那么你可以使用

preg_match('~^https?://(?:[^./]+\.)*(?!mysite)[^./]+\.com(?:‌​/.*)?$~', $url)

regex demo

详情:

  • ^ - 字符串开头
  • https?:// - http://https://
  • (?:[^./]+\.)* - 零个或多个序列:
    • [^./]+ - ./
    • 以外的 1+ 个字符
    • \. - 文字点
  • (?!mysite)[^./]+ - 除 ./ 之外的 1+ 个字符 - 最多 .com - 不等于 mysite
  • \.com - .com 字符串
  • (?:‌​/.*)? - 1 或 0 个序列
    • / - 斜线
    • .* - 除换行符以外的任何 0+ 个字符
  • $ - 字符串结尾。