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

时间:2016-12-19 06:52:11

标签: php regex regex-lookarounds

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

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

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

我的斗争是排除某些网站。我已经尝试过了,但它似乎没有用。我希望它表现得像一个AND操作,所以如果第一个是假的,它不应该进入下一个条件。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

如果您只是要求网址中包含httpwwwcom,而不是主机部分中的mysite,那么您可以使用< / p>

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

请参阅regex demo

<强>详情:

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