javascript - 验证 url 并检查 url 是域还是子域

标签 javascript validation 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

最佳答案

您实际上可以在一个正则表达式中对此进行测试,例如:

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

关于javascript - 验证 url 并检查 url 是域还是子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14644805/

相关文章:

javascript - 如何使用 d3.js 在饼图切片附近显示工具提示?

没有 jQuery 的 JavaScript 日期时间选择器?

javascript - 如何使用 javaScript 将一些文本放入剪贴板?

javascript - 文件大小因 chrome 网络面板而异

api - Wikipedia list =搜索REST API : how to retrieve also Url of matching articles

jquery - 使用 jQuery 验证单选按钮

validation - UI 选择表单属性 "touched"未在第一次交互时设置

javascript - Angularjs 字段仅在其值大于零时有效

XML::LibXML 问题查找具有命名空间的 XML 节点

javascript - 如何为社交媒体网站 : mobile app if mobile, 和桌面标准 URL 编写链接?