在引用分析中否定正则表达式

Negate regex in referer analysis

我想在 referer 中找到任何域,除了我的域(完整 URL https://www.example.com/AnySubDir)。

当我在下面使用否定表达式时,任何字符串都匹配,为什么?

(?! (^Referer?:\shttps?:\/\/([^\/]+\.)?www\.example\.com(\/|$)(.*)) )

您的正则表达式仅包含一个否定前瞻 (?! (^Referer,当不匹配 space 后跟字符串 Referer 等的开头时,它将成功。这将在很多位置匹配。

你可以做的是在正则表达式的开头移动 ^ 并使用否定前瞻来断言你的字符串不以你的 url.

开头
^(?!Referer: https://www\.example\.com).*

Regex demo

没有列出编程语言,但解决此问题的另一种方法是检查字符串是否以 Referer: https://www.example.com

开头