Все домены оканчиваются на "google.xx", "google.co.xx" или "google.com.xx", кроме "google.it.ao" и "google.com", поэтому если вы просто Посмотрите на домен, это регулярное выражение должно работать в большинстве случаев (оно не идеально, но оно принимает все перечисленные домены и отклоняет большинство других допустимых доменов, в которых есть "google"):
/^(\w+\.)*google\.((com\.|co\.|it\.)?([a-z]{2})|com)$/i
В качестве функции вы можете сделать что-то вроде этого:
function isGoogleUrl(url) {
url = url.replace(/^https?:\/\//i, ''); // Strip "http://" from the beginning
url = url.replace(/\/.*/, ''); // Strip off the path
return /^(\w+\.)*google\.((com\.|co\.|it\.)?([a-z]{2})|com)$/i.test(url);
}
Вы можете упростить это, если используете window.location.hostname
:
function isGoogleUrl() {
return /^(\w+\.)*google\.((com\.|co\.|it\.)?([a-z]{2})|com)$/i.test(window.location.hostname);
}
Единственный способ допустить ложный положительный результат - это если есть "google. (Некоторый другой TLD)". Например, "google.tv" нет в списке (он перенаправляет на google.com), но он прошел бы.
Редактировать: Как указал Виммель, он также принимает недействительные домены, такие как "google.com.fr", которые не указаны в списке. Он в основном будет принимать любое доменное имя "google.wh независимо".