복붙노트

[JQUERY] 문자열에서 추출 호스트 이름

JQUERY

문자열에서 추출 호스트 이름

해결법


  1. 1.나는 고궁 박물원 패키지 PSL (공공 접미사 목록)을 사용하는 것이 좋습니다. 물론 그 즉 WWW. 食 狮. 公司 .CN, BC (루트 도메인으로 간주됩니다 같이 "공공 접미사 목록은"모든 유효한 도메인 접미사 규칙 만이 아니라 국가 코드 최상위 도메인하지만 유니 코드 문자의 목록입니다 kobe.jp 등). 여기에 대해 자세히 알아보십시오.

    나는 고궁 박물원 패키지 PSL (공공 접미사 목록)을 사용하는 것이 좋습니다. 물론 그 즉 WWW. 食 狮. 公司 .CN, BC (루트 도메인으로 간주됩니다 같이 "공공 접미사 목록은"모든 유효한 도메인 접미사 규칙 만이 아니라 국가 코드 최상위 도메인하지만 유니 코드 문자의 목록입니다 kobe.jp 등). 여기에 대해 자세히 알아보십시오.

    시험:

    npm install --save psl
    

    그런 다음 내 "extractHostname"구현 실행과 :

    let psl = require('psl');
    let url = 'http://www.youtube.com/watch?v=ClkQA2Lb_iE';
    psl.get(extractHostname(url)); // returns youtube.com
    

    그래서 아래에만 extractHostname을 테스트, NPM 패키지를 사용할 수 없습니다.

    기능 extractHostname (URL) { VAR 호스트 이름; // 발견 및 제거 프로토콜 (HTTP, FTP 등) GET 호스트 이름 경우 (url.indexOf ( "//")> -1) { 호스트 url.split = ( '/') [2]; } 다른 { 호스트 url.split = ( '/') [0]; } // 발견 및 제거 포트 번호 호스트 hostname.split = ( '') [0]; // 발견 및 제거 "?" 호스트 hostname.split = ( '?') [0]; 호스트 이름을 반환; } // 코드를 테스트 CONSOLE.LOG ( "== 테스트 extractHostname =="); CONSOLE.LOG (extractHostname ( "http://www.blog.classroom.me.uk/index.php")); CONSOLE.LOG (extractHostname ( "http://www.youtube.com/watch?v=ClkQA2Lb_iE")); CONSOLE.LOG (extractHostname ( "https://www.youtube.com/watch?v=ClkQA2Lb_iE")); CONSOLE.LOG (extractHostname ( "www.youtube.com/watch?v=ClkQA2Lb_iE")); CONSOLE.LOG (extractHostname ( "FTPS : //ftp.websitename.com/dir/file.txt")); CONSOLE.LOG (extractHostname ( "websitename.com:1234/dir/file.txt")); CONSOLE.LOG (extractHostname ( "FTPS : //websitename.com 1234 / DIR / file.txt를")); CONSOLE.LOG (extractHostname ( "example.com?param=value")); CONSOLE.LOG (extractHostname ( "https://facebook.github.io/jest/")); CONSOLE.LOG (extractHostname ( "// youtube.com/watch?v=ClkQA2Lb_iE")); CONSOLE.LOG (extractHostname (에 "http : // localhost를 : 4200 / 시계 V = ClkQA2Lb_iE"));

    에 관계없이 프로토콜 또는 포트 번호를 가지고, 당신은 도메인을 추출 할 수 있습니다. 나는이 할 것이라고 생각하기 때문에 이러한 현상이 매우 단순화, 비 정규식 솔루션입니다.

    * 당신의 제안을 당신 @Timmerz, @renoirb, @rineez, @BigDong, @ ra00l, @ILikeBeansTacos, @CharlesRobertson 감사합니다! 로스 - 알렌 @ 버그를보고 해 주셔서 감사합니다!


  2. 2.정규 표현식을 사용하지 않고 깔끔한 트릭 :

    정규 표현식을 사용하지 않고 깔끔한 트릭 :

    var tmp        = document.createElement ('a');
    ;   tmp.href   = "http://www.example.com/12xy45";
    
    // tmp.hostname will now contain 'www.example.com'
    // tmp.host will now contain hostname and port 'www.example.com:80'
    

    예를 들면 다음과 같이 함수에서 위를 감싸고 당신은 자신에게 URI 중 도메인 부분을 챙겨의 최상의 방법이있다.

    function url_domain(data) {
      var    a      = document.createElement('a');
             a.href = data;
      return a.hostname;
    }
    

  3. 3.단지 URL 생성자에 인수로 URL을 전달, 문자열을 구문 분석 할 필요가 없습니다 :

    단지 URL 생성자에 인수로 URL을 전달, 문자열을 구문 분석 할 필요가 없습니다 :

    var url = 'http://www.youtube.com/watch?v=ClkQA2Lb_iE';
    var hostname = (new URL(url)).hostname;
    
    assert(hostname === 'www.youtube.com');
    

  4. 4.이 시도:

    이 시도:

    var matches = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
    var domain = matches && matches[1];  // domain will be null if no match is found
    

    당신이 당신의 결과에서 포트를 제외 할 경우,이 표현을 대신 사용

    /^https?\:\/\/([^\/:?#]+)(?:[\/:?#]|$)/i
    

    편집 : 일치에서 특정 도메인을 방지 부정적인 내다보기를 사용하십시오. (?! youtube.com)

    /^https?\:\/\/(?!(?:www\.)?(?:youtube\.com|youtu\.be))([^\/:?#]+)(?:[\/:?#]|$)/i
    

  5. 5.당신은 이것에 대한 여분의 종속성을 필요가 없습니다! 성능을 위해 최적화 필요 여부,이 개 좋은 솔루션이 있는지 여부에 따라 :

    당신은 이것에 대한 여분의 종속성을 필요가 없습니다! 성능을 위해 최적화 필요 여부,이 개 좋은 솔루션이 있는지 여부에 따라 :

    바벨탑 시대에, 깨끗한 쉬운 솔루션은 URL.hostname을 사용하는 것입니다.

    CONST에서 gethostname = (URL) => { // 사용 URL 생성자 및 반환 호스트 이름 새로운 URL (URL) .hostname를 반환; } // 테스트 CONSOLE.LOG (에서 gethostname ( "https://stackoverflow.com/questions/8498592/extract-hostname-name-from-string/")); CONSOLE.LOG (에서 gethostname ( "https://developer.mozilla.org/en-US/docs/Web/API/URL/hostname"));

    URL.hostname는 IE (caniuse)를 제외한 모든 주요 브라우저에서 지원하는 URL의 API의 일부입니다. 당신은 기존 브라우저를 지원해야하는 경우 URL의 polyfill을 사용합니다.

    이 솔루션을 사용하면 또한 당신에게 다른 URL의 메서드와 속성에 대한 액세스를 제공 할 것입니다. 당신은 또한 예를 들어, URL의 경로 이름 또는 쿼리 문자열 PARAMS을 추출하려는 경우에 유용 할 것이다.

    URL.hostname 빠르게 앵커 솔루션이나 parseUri을 사용하는 것보다. 그러나이 gilly3의 정규식보다 훨씬 느린 여전히 :

    CONST getHostnameFromRegex = (URL) => { // 정규식에 대해 실행 const를 일치 = url.match (/ ^ HTTPS \ : \ / \ / ([^ \ / #?] +) (:? [? \ / #] | $) / I); // 추출 호스트 이름 (일치하는 항목이없는 경우 null이됩니다) 리턴 일치 && 일치하는 [1]; } // 테스트 CONSOLE.LOG (getHostnameFromRegex ( "https://stackoverflow.com/questions/8498592/extract-hostname-name-from-string/")); CONSOLE.LOG (getHostnameFromRegex ( "https://developer.mozilla.org/en-US/docs/Web/API/URL/hostname"));

    이 jsPerf에 직접 테스트

    당신이 (성능이 요인이 될 것이다)의 URL 매우 많은 수를 처리해야하는 경우, 정규식을 사용합니다. 그렇지 않으면, URL.hostname를 사용합니다.


  6. 6.당신이 포트 숫자, 특수 문자를 가질 수 있기 때문에 URL을 구문 분석하는 것은 까다로운 일이 될 수 있습니다. 따라서, 나는 당신을 위해이 일을 parseUri 같은 것을 사용하는 것이 좋습니다. 나는 성능 당신이 URL을 수백 파싱하지 않는 한 문제가 될 것입니다 의심한다.

    당신이 포트 숫자, 특수 문자를 가질 수 있기 때문에 URL을 구문 분석하는 것은 까다로운 일이 될 수 있습니다. 따라서, 나는 당신을 위해이 일을 parseUri 같은 것을 사용하는 것이 좋습니다. 나는 성능 당신이 URL을 수백 파싱하지 않는 한 문제가 될 것입니다 의심한다.


  7. 7.나는 주어진 솔루션을 사용하려고 선택받은 사람은 나를 위해 하나 망쳐 놨을 "a 요소 만들기의"내 목적을 위해 과잉와이었다.

    나는 주어진 솔루션을 사용하려고 선택받은 사람은 나를 위해 하나 망쳐 놨을 "a 요소 만들기의"내 목적을 위해 과잉와이었다.

    그것은 아직 URL에 포트에 대한 준비가 아니다. 나는 누군가의 발견 유용 희망

    function parseURL(url){
        parsed_url = {}
    
        if ( url == null || url.length == 0 )
            return parsed_url;
    
        protocol_i = url.indexOf('://');
        parsed_url.protocol = url.substr(0,protocol_i);
    
        remaining_url = url.substr(protocol_i + 3, url.length);
        domain_i = remaining_url.indexOf('/');
        domain_i = domain_i == -1 ? remaining_url.length - 1 : domain_i;
        parsed_url.domain = remaining_url.substr(0, domain_i);
        parsed_url.path = domain_i == -1 || domain_i + 1 == remaining_url.length ? null : remaining_url.substr(domain_i + 1, remaining_url.length);
    
        domain_parts = parsed_url.domain.split('.');
        switch ( domain_parts.length ){
            case 2:
              parsed_url.subdomain = null;
              parsed_url.host = domain_parts[0];
              parsed_url.tld = domain_parts[1];
              break;
            case 3:
              parsed_url.subdomain = domain_parts[0];
              parsed_url.host = domain_parts[1];
              parsed_url.tld = domain_parts[2];
              break;
            case 4:
              parsed_url.subdomain = domain_parts[0];
              parsed_url.host = domain_parts[1];
              parsed_url.tld = domain_parts[2] + '.' + domain_parts[3];
              break;
        }
    
        parsed_url.parent_domain = parsed_url.host + '.' + parsed_url.tld;
    
        return parsed_url;
    }
    

    이 실행 :

    parseURL('https://www.facebook.com/100003379429021_356001651189146');
    

    결과:

    Object {
        domain : "www.facebook.com",
        host : "facebook",
        path : "100003379429021_356001651189146",
        protocol : "https",
        subdomain : "www",
        tld : "com"
    }
    

  8. 8.이 페이지에서 결국 당신이 URL의 가장 REGEX를 찾고 있다면이 하나를 시도해보십시오 :

    이 페이지에서 결국 당신이 URL의 가장 REGEX를 찾고 있다면이 하나를 시도해보십시오 :

    ^(?:https?:)?(?:\/\/)?([^\/\?]+)
    

    https://regex101.com/r/pX5dL9/1

    그것은 HTTP없이 URL을 작동 : //를 http, https로, 단지 // 말아야 잡아 경로 및 쿼리 경로도 함께.

    행운을 빕니다


  9. 9.이 솔루션은 답변 플러스 추가 속성을 제공합니다. 아니 JQuery와 또는 다른 종속 붙여 넣기 및 이동이 필요합니다.

    이 솔루션은 답변 플러스 추가 속성을 제공합니다. 아니 JQuery와 또는 다른 종속 붙여 넣기 및 이동이 필요합니다.

    용법

    getUrlParts("https://news.google.com/news/headlines/technology.html?ned=us&hl=en")
    

    산출

    {
      "origin": "https://news.google.com",
      "domain": "news.google.com",
      "subdomain": "news",
      "domainroot": "google.com",
      "domainpath": "news.google.com/news/headlines",
      "tld": ".com",
      "path": "news/headlines/technology.html",
      "query": "ned=us&hl=en",
      "protocol": "https",
      "port": 443,
      "parts": [
        "news",
        "google",
        "com"
      ],
      "segments": [
        "news",
        "headlines",
        "technology.html"
      ],
      "params": [
        {
          "key": "ned",
          "val": "us"
        },
        {
          "key": "hl",
          "val": "en"
        }
      ]
    }
    

    암호 이 코드는 슈퍼 빠른보다는 쉽게 이해할 수 있도록 설계되었습니다. 이 프런트 엔드 또는 몇 개의 서버 용도에 좋은, 그래서 그것은 아닌 대량 처리량, 쉽게 초당 100 번 호출 할 수 있습니다.

    function getUrlParts(fullyQualifiedUrl) {
        var url = {},
            tempProtocol
        var a = document.createElement('a')
        // if doesn't start with something like https:// it's not a url, but try to work around that
        if (fullyQualifiedUrl.indexOf('://') == -1) {
            tempProtocol = 'https://'
            a.href = tempProtocol + fullyQualifiedUrl
        } else
            a.href = fullyQualifiedUrl
        var parts = a.hostname.split('.')
        url.origin = tempProtocol ? "" : a.origin
        url.domain = a.hostname
        url.subdomain = parts[0]
        url.domainroot = ''
        url.domainpath = ''
        url.tld = '.' + parts[parts.length - 1]
        url.path = a.pathname.substring(1)
        url.query = a.search.substr(1)
        url.protocol = tempProtocol ? "" : a.protocol.substr(0, a.protocol.length - 1)
        url.port = tempProtocol ? "" : a.port ? a.port : a.protocol === 'http:' ? 80 : a.protocol === 'https:' ? 443 : a.port
        url.parts = parts
        url.segments = a.pathname === '/' ? [] : a.pathname.split('/').slice(1)
        url.params = url.query === '' ? [] : url.query.split('&')
        for (var j = 0; j < url.params.length; j++) {
            var param = url.params[j];
            var keyval = param.split('=')
            url.params[j] = {
                'key': keyval[0],
                'val': keyval[1]
            }
        }
        // domainroot
        if (parts.length > 2) {
            url.domainroot = parts[parts.length - 2] + '.' + parts[parts.length - 1];
            // check for country code top level domain
            if (parts[parts.length - 1].length == 2 && parts[parts.length - 1].length == 2)
                url.domainroot = parts[parts.length - 3] + '.' + url.domainroot;
        }
        // domainpath (domain+path without filenames) 
        if (url.segments.length > 0) {
            var lastSegment = url.segments[url.segments.length - 1]
            var endsWithFile = lastSegment.indexOf('.') != -1
            if (endsWithFile) {
                var fileSegment = url.path.indexOf(lastSegment)
                var pathNoFile = url.path.substr(0, fileSegment - 1)
                url.domainpath = url.domain
                if (pathNoFile)
                    url.domainpath = url.domainpath + '/' + pathNoFile
            } else
                url.domainpath = url.domain + '/' + url.path
        } else
            url.domainpath = url.domain
        return url
    }
    

  10. 10.그냥 URL () 생성자를 사용 :

    그냥 URL () 생성자를 사용 :

    new URL(url).host
    

  11. 11.이 문제에 대한 해결책 오늘 찾고 있었다. 위의 답변 중 어느 것도 만족 것 같았다. 나는 한 라이너, 함수에 싸여해야했다없이 조건부 논리 아무것도 할 수있는 솔루션을 원했다.

    이 문제에 대한 해결책 오늘 찾고 있었다. 위의 답변 중 어느 것도 만족 것 같았다. 나는 한 라이너, 함수에 싸여해야했다없이 조건부 논리 아무것도 할 수있는 솔루션을 원했다.

    여기에 내가, 정말 잘 작동하는 것 같다 해낸 무엇 :

    hostname="http://www.example.com:1234"
    hostname.split("//").slice(-1)[0].split(":")[0].split('.').slice(-2).join('.')   // gives "example.com"
    

    월은 언뜻 보면 복잡하지만, 꽤 간단하게 작동 봐; 키가 좋은 부분 (분할 어레이의 정면에서 얻을 및 [0]) 분할 어레이의 단부로부터 인출되어야하는 장소의 커플 사용 '슬라이스 (α)'이다.

    이 시험은 각각 "example.com"를 반환합니다 :

    "http://example.com".split("//").slice(-1)[0].split(":")[0].split('.').slice(-2).join('.')
    "http://example.com:1234".split("//").slice(-1)[0].split(":")[0].split('.').slice(-2).join('.')
    "http://www.example.com:1234".split("//").slice(-1)[0].split(":")[0].split('.').slice(-2).join('.')
    "http://foo.www.example.com:1234".split("//").slice(-1)[0].split(":")[0].split('.').slice(-2).join('.')
    

  12. 12.다음은 jQuery를 한 줄입니다 :

    다음은 jQuery를 한 줄입니다 :

    $('<a>').attr('href', url).prop('hostname');
    

  13. 13.

    function hostname(url) {
        var match = url.match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i);
        if ( match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0 ) return match[2];
    }
    

    http://www.primaryobjects.com/CMS/Article145 : 원래 신용 간다


  14. 14.좋아, 나는이 오래된 질문 알아요,하지만 난 그것을 공유하고자 그래서 나는 슈퍼 효율적인 URL 파서했다.

    좋아, 나는이 오래된 질문 알아요,하지만 난 그것을 공유하고자 그래서 나는 슈퍼 효율적인 URL 파서했다.

    당신이 볼 수 있듯이, 함수의 구조는 매우 이상한이지만, 효율성이다. 어떤 프로토 타입 함수는 문자열이 두 번 이상 반복 한을받지 않으며, 사용하지 않는, 어떤 문자는 필요 이상으로 처리되지 않습니다.

    function getDomain(url) {
        var dom = "", v, step = 0;
        for(var i=0,l=url.length; i<l; i++) {
            v = url[i]; if(step == 0) {
                //First, skip 0 to 5 characters ending in ':' (ex: 'https://')
                if(i > 5) { i=-1; step=1; } else if(v == ':') { i+=2; step=1; }
            } else if(step == 1) {
                //Skip 0 or 4 characters 'www.'
                //(Note: Doesn't work with www.com, but that domain isn't claimed anyway.)
                if(v == 'w' && url[i+1] == 'w' && url[i+2] == 'w' && url[i+3] == '.') i+=4;
                dom+=url[i]; step=2;
            } else if(step == 2) {
                //Stop at subpages, queries, and hashes.
                if(v == '/' || v == '?' || v == '#') break; dom += v;
            }
        }
        return dom;
    }
    

  15. 15.이것은 완전한 대답이 아니라, 아래의 코드가 당신을 도움이 될 것입니다 :

    이것은 완전한 대답이 아니라, 아래의 코드가 당신을 도움이 될 것입니다 :

    function myFunction() {
        var str = "https://www.123rf.com/photo_10965738_lots-oop.html";
        matches = str.split('/');
        return matches[2];
    }
    

    나는 어떤 사람이 빨리 나보다 코드를 생성하고 싶습니다. 또한 내 자아를 개선하는 데 도움이됩니다.


  16. 16.oneline와 JQuery와

    oneline와 JQuery와

    $('<a>').attr('href', document.location.href).prop('hostname');
    

  17. 17.

    // use this if you know you have a subdomain
    // www.domain.com -> domain.com
    function getDomain() {
      return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
    }
    

  18. 18.

    String.prototype.trim = function(){return his.replace(/^\s+|\s+$/g,"");}
    function getHost(url){
        if("undefined"==typeof(url)||null==url) return "";
        url = url.trim(); if(""==url) return "";
        var _host,_arr;
        if(-1<url.indexOf("://")){
            _arr = url.split('://');
            if(-1<_arr[0].indexOf("/")||-1<_arr[0].indexOf(".")||-1<_arr[0].indexOf("\?")||-1<_arr[0].indexOf("\&")){
                _arr[0] = _arr[0].trim();
                if(0==_arr[0].indexOf("//")) _host = _arr[0].split("//")[1].split("/")[0].trim().split("\?")[0].split("\&")[0];
                else return "";
            }
            else{
                _arr[1] = _arr[1].trim();
                _host = _arr[1].split("/")[0].trim().split("\?")[0].split("\&")[0];
            }
        }
        else{
            if(0==url.indexOf("//")) _host = url.split("//")[1].split("/")[0].trim().split("\?")[0].split("\&")[0];
            else return "";
        }
        return _host;
    }
    function getHostname(url){
        if("undefined"==typeof(url)||null==url) return "";
        url = url.trim(); if(""==url) return "";
        return getHost(url).split(':')[0];
    }
    function getDomain(url){
        if("undefined"==typeof(url)||null==url) return "";
        url = url.trim(); if(""==url) return "";
        return getHostname(url).replace(/([a-zA-Z0-9]+.)/,"");
    }
    

  19. 19.나는 개인적으로이 솔루션에 대한 많은 연구, 내가 찾을 수있는 최고의 하나는 CloudFlare의 "브라우저 확인"에서 실제로 :

    나는 개인적으로이 솔루션에 대한 많은 연구, 내가 찾을 수있는 최고의 하나는 CloudFlare의 "브라우저 확인"에서 실제로 :

    function getHostname(){  
                secretDiv = document.createElement('div');
                secretDiv.innerHTML = "<a href='/'>x</a>";
                secretDiv = secretDiv.firstChild.href;
                var HasHTTPS = secretDiv.match(/https?:\/\//)[0];
                secretDiv = secretDiv.substr(HasHTTPS.length);
                secretDiv = secretDiv.substr(0, secretDiv.length - 1);
                return(secretDiv);  
    }  
    
    getHostname();
    

    더 "인간"읽을 수 있도록 나는 변수를 다시 작성,하지만 작업 더 나은 예상보다 않습니다.


  20. 20.음, 쉽게 많이 될 것 정규 표현식을 사용하고 :

    음, 쉽게 많이 될 것 정규 표현식을 사용하고 :

        mainUrl = "http://www.mywebsite.com/mypath/to/folder";
        urlParts = /^(?:\w+\:\/\/)?([^\/]+)(.*)$/.exec(mainUrl);
        host = Fragment[1]; // www.mywebsite.com
    

  21. 21.

    import URL from 'url';
    
    const pathname = URL.parse(url).path;
    console.log(url.replace(pathname, ''));
    

    이 두 프로토콜을 담당한다.


  22. 22.짧은 방법으로는 다음과 같이 할 수있다

    짧은 방법으로는 다음과 같이 할 수있다

    var url = "http://www.someurl.com/support/feature"
    
    function getDomain(url){
      domain=url.split("//")[1];
      return domain.split("/")[0];
    }
    eg:
      getDomain("http://www.example.com/page/1")
    
      output:
       "www.example.com"
    

    도메인 이름을 얻기 위해 위의 기능을 사용하여


  23. 23.구문 분석 - URL은 가장 강력한 패턴과 자바 스크립트 라이브러리로 나타납니다

    구문 분석 - URL은 가장 강력한 패턴과 자바 스크립트 라이브러리로 나타납니다

    여기에 기능의 개요는 다음과 같습니다

    제 1 장 표준화 또는 구문 분석 한 URL

    장 모든 URL을 추출합니다

    특정 이름을 가진 제 3 장 추출 된 URI

    장 모든 퍼지 URL을 추출 (4)

    장 텍스트의 모든 URL을 강조 5.

    장 원시 HTML이나 XML에있는 모든 URL을 추출 (6)


  24. 24.암호:

    암호:

    var regex = /\w+.(com|co\.kr|be)/ig;
    var urls = ['http://www.youtube.com/watch?v=ClkQA2Lb_iE',
                'http://youtu.be/ClkQA2Lb_iE',
                'http://www.example.com/12xy45',
                'http://example.com/random'];
    
    
    $.each(urls, function(index, url) {
        var convertedUrl = url.match(regex);
        console.log(convertedUrl);
    });
    

    결과:

    youtube.com
    youtu.be
    example.com
    example.com
    

  25. 25.구문 분석 도메인 - 매우 견고한 경량 라이브러리

    구문 분석 도메인 - 매우 견고한 경량 라이브러리

    구문 분석 도메인을 ASL 설치

    const { fromUrl, parseDomain } = require("parse-domain");
    

    예 1

    parseDomain(fromUrl("http://www.example.com/12xy45"))
    
    { type: 'LISTED',
      hostname: 'www.example.com',
      labels: [ 'www', 'example', 'com' ],
      icann:
       { subDomains: [ 'www' ],
         domain: 'example',
         topLevelDomains: [ 'com' ] },
      subDomains: [ 'www' ],
      domain: 'example',
      topLevelDomains: [ 'com' ] }
    

    예 2

    parseDomain(fromUrl("http://subsub.sub.test.ExAmPlE.coM/12xy45"))
    
    { type: 'LISTED',
      hostname: 'subsub.sub.test.example.com',
      labels: [ 'subsub', 'sub', 'test', 'example', 'com' ],
      icann:
       { subDomains: [ 'subsub', 'sub', 'test' ],
         domain: 'example',
         topLevelDomains: [ 'com' ] },
      subDomains: [ 'subsub', 'sub', 'test' ],
      domain: 'example',
      topLevelDomains: [ 'com' ] }
    

    왜?

    유스 케이스와 양에 따라 난 강력하게 정규식 또는 다른 문자열 조작 수단을 사용하여이 문제를 직접 해결하기에 좋습니다. 이 문제의 핵심은 당신이 도메인 및 하위 도메인에 제대로 구문 분석 URL 문자열에 대한 모든 gTLD를하고 ccTLD에 접미사를 알 필요가 있다는 것입니다,이 접미사는 정기적으로 업데이트됩니다. 이것은 해결 된 문제가 아니라 하나의 당신이 (당신이 구글이나 뭐하지 않는 한) 자신을 해결합니다. 당신이 시도하고이 일에서 길을 구문 분석하지 않는 핀치에 호스트 이름 또는 도메인 이름이 필요하지 않는 한.


  26. 26.내 코드는 다음과 같습니다. 정규 표현식은 여러 형태로 올 수 있으며, 여기 내 테스트 케이스는 나는 그것을 더 확장 생각합니다.

    내 코드는 다음과 같습니다. 정규 표현식은 여러 형태로 올 수 있으며, 여기 내 테스트 케이스는 나는 그것을 더 확장 생각합니다.

    기능 extractUrlInfo (URL) { 있도록 등록 = / ^ ((<프로토콜> HTTP [S])? \ / \ /)? (<호스트> ((\ D {1,2} | 1 \ D \ D | 2 0-4 ] \ D | 25 [0-5]) \ (\ D {1,2} |. 1 \ D \ D | 2 [0-4] \ D |. 25 [0-5]) \ (\ {D 1,2} | 1 \ D \ D | 2 [0-4] \ D | 25 [0-5]) \ (\ D {1,2} |. 1 \ D \ D | 2 [0-4] \ D | 25 [0-5]) |. -a-ZA-Z0-9 @ % ._ \ + ~ # = {1,256} \ [A-ZA-Z0-9 () {1, ([.? - A-ZA-Z0-9 () @ _ % \ + ~ # & // = *) ~ 6} \ b)) (\ (<포트> [0-9] | [ 1-9] \ D | [1-9] \ {2} D | [1-9] \ D {3} | [1-5] \ D {4} | 6 [0-4] \ D {3 } | 65 [0-4] \ {2} D | 655 [0-2] \ D |? 6553 [0-5])) $ / reg.exec (URL) .groups를 반환 } var에 URL = "https://192.168.1.1:1234" CONSOLE.LOG (extractUrlInfo (URL)) var에 URL = "https://stackoverflow.com/questions/8498592/extract-hostname-name-from-string" CONSOLE.LOG (extractUrlInfo (URL))


  27. 27.정규식을 사용하여 정확한 도메인 이름에 대한 코드를 아래에보십시오,

    정규식을 사용하여 정확한 도메인 이름에 대한 코드를 아래에보십시오,

    문자열 라인 = "http://www.youtube.com/watch?v=ClkQA2Lb_iE";

      String pattern3="([\\w\\W]\\.)+(.*)?(\\.[\\w]+)";
    
      Pattern r = Pattern.compile(pattern3);
    
    
      Matcher m = r.matcher(line);
      if (m.find( )) {
    
        System.out.println("Found value: " + m.group(2) );
      } else {
         System.out.println("NO MATCH");
      }
    
  28. from https://stackoverflow.com/questions/8498592/extract-hostname-name-from-string by cc-by-sa and MIT license