Отрицательное регулярное выражение в анализе реферера - PullRequest
0 голосов
/ 15 января 2019

Я хочу найти любой домен в реферере, кроме моего домена (полный URL https://www.example.com/AnySubDir).

Когда я использую отрицательное выражение ниже, любая строка совпадает, почему?

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

1 Ответ

0 голосов
/ 15 января 2019

Ваше регулярное выражение состоит только из отрицательного взгляда (?! (^Referer, который будет успешным, если не будет совпадать с пробелом, за которым следует начало строки Referer и т. Д. Это будет совпадать при большом количестве позиций.

Что вы можете сделать, это переместить ^ в начале регулярного выражения и использовать отрицательный взгляд, чтобы утверждать, что ваша строка не начинается с вашего URL.

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

Regex demo

В списке нет языка программирования, но другим способом решения этой проблемы может быть проверка, начинается ли строка с Referer: https://www.example.com

...