проверить URL-адрес и проверить, если URL-адрес-это домен или поддомен



Мне нужно проверить URL и проверить, является ли введенный URL доменом или поддоменом.

Я попробовал решение, оно сработало, но в каком-то сценарии оно провалилось.



function subDomain(url) 
{

// IF THERE, REMOVE WHITE SPACE FROM BOTH ENDS
url = url.replace(new RegExp(/^s+/),""); // START
url = url.replace(new RegExp(/s+$/),""); // END

// IF FOUND, CONVERT BACK SLASHES TO FORWARD SLASHES
url = url.replace(new RegExp(/\/g),"/");

// IF THERE, REMOVES 'http://', 'https://' or 'ftp://' FROM THE START
//url = url.replace(new RegExp(/^http://|^https://|^ftp:///i),"");

// IF THERE, REMOVES 'www.' FROM THE START OF THE STRING
url = url.replace(new RegExp(/^www./i),"");

// REMOVE COMPLETE STRING FROM FIRST FORWARD SLASH ON
url = url.replace(new RegExp(//(.*)/),"");

// REMOVES '.??.??' OR '.???.??' FROM END - e.g. '.CO.UK', '.COM.AU'
if (url.match(new RegExp(/.[a-z]{2,3}.[a-z]{2}$/i))) {
url = url.replace(new RegExp(/.[a-z]{2,3}.[a-z]{2}$/i),"");

// REMOVES '.??' or '.???' or '.????' FROM END - e.g. '.US', '.COM', '.INFO'
} else if (url.match(new RegExp(/.[a-z]{2,4}$/i))) {
url = url.replace(new RegExp(/.[a-z]{2,4}$/i),"");
}

// CHECK TO SEE IF THERE IS A DOT '.' LEFT IN THE STRING
var subDomain = (url.match(new RegExp(/./g))) ? true : false;
return(subDomain);
}


Результаты:



 
mydomain.com -> false

subdomain.mydomain.com -> true

mydomain.com. -> true
690   1  

1 ответ:

Вы можете проверить это в одном регулярном выражении, например:

var isSubdomain = function(url) {
    url = url || 'http://www.test-domain.com'; // just for the example
    var regex = new RegExp(/^([a-z]+\:\/{2})?([\w-]+\.[\w-]+\.\w+)$/);

    return !!url.match(regex); // make sure it returns boolean
}

console.log(isSubdomain("example.com"));
console.log(isSubdomain("http://example.com:4000"));
console.log(isSubdomain("www.example.com:4000"));
console.log(isSubdomain("https://www.example.com"));
console.log(isSubdomain("sub.example.com"));
console.log(isSubdomain("example.co.uk")); //it doesn't work on these very specific cases

Comments

    Ничего не найдено.