Основная проблема заключается в том, что вы хотите сопоставить все виды префиксов, после которых следует host
, если host
начинается с .
;но вы хотите сопоставить host
в одиночку, если нет.Это можно сделать с помощью предварительных утверждений, но, поскольку вы все равно создаете регулярное выражение, гораздо проще просто создать его по-разному в зависимости от случая.Я не знаю Javascript, поэтому я буду использовать псевдокод.
Для первого случая мы хотим сопоставить ноль или более (не захватывающих) групп непериодов, за которыми следует один период, затем по крайней мереодин непериод, все до host
.Для второго случая мы просто хотим сопоставить host
.
if host starts with '.':
var reg = new RegExp('^https?://((?:[^.]+\.)*[^.]+' + host + ')');
else:
var reg = new RegExp('^https?://(' + host + ')');