2013-03-18 2 views
0

나는이 URL을 가지고 있으며이 모든 URL은 웹 사이트의 루트로 간주됩니다. 어떻게 "javascript location.pathname"을 사용하여 아래의 패턴을 결정할 수 있습니까? 이 패턴에서 반복됩니다 ..웹 사이트 루트를 결정하는 정규 표현식

http://www.somehost.tv/sitedev/ 
http://www.somehost.tv/sitetest/ 
http://www.somehost.tv/site/ 

http://www.somehost.tv/sitedev/index.html 
http://www.somehost.tv/sitetest/index.html 
http://www.somehost.tv/site/index.html 

사용자가 웹 사이트의 루트에있는 경우에만 jQuery 대화 상자를 표시하려고합니다. 당신이 location.pathname에 일치하는 경우 단지

/^\/site(test|dev)?\/(index\.html)?$/.test(location.pathname) 
+0

에 예 I)는 정규식 /^\/|index\.html|$/i.test(location.pathname 다음 시도; – user357086

+0

무엇을 찾으려고하십니까? 어서 ... 당신의 질문을 편집하고, 이것을 시도한 코드를 추가하십시오. 출력/결과를 추가하고 예상 한 바를 알려주십시오. –

답변

0

프로토콜 및 도메인을 포함한 전체 패턴은, 다음과 같이 될 수있다 . regex 파서를 호출 할 필요가 없습니다.

var url = 'http://www.somesite.tv/foobar/host/site'; 
    urlLocation = document.createElement('a'); 

urlLocation.href = url; 
alert(urlLocation.hostname); // alerts 'www.somesite.tv' 
+0

이 도구를 사용하여 테스트했지만 var site = 'http://www.somehost.tv/sitetest/' var isRoot = /^\/site(test|dev)?\/(index.html)? $ /. 시험 (사이트); 경고 (isRoot); – user357086

+0

이 작업을 수행 할 수 없습니다. 마지막 정규식이 경로 이름을 확인하는 동안'site' 문자열은'somehost.tv'로 시작합니다. 첫 번째 패턴을 대신 사용하십시오 – fcalderan

+0

Fabrizio에게 감사드립니다. 그것은 작동! – user357086

2

단순히이 구문 분석 DOM을 사용하려고

/^http:\/\/www\.somehost\.tv\/site(test|dev)?\/(index\.html)?$/ 

하지만 :

0

명시 적으로 의 감소 문자열에 당신의 URL을 배열 채우기

  • 루프 또한 예를

    • 을 위해 할 수있는이

      위한 정규 표현식이 필요하지 않은 경우

      • 가장 짧은 요소.
      • 가장 긴 요소에 대해 그것을 비교.
    • 일치 할 때까지입니다.
      var urls = ["http://www.somehost.tv/sitedev/", 
      "http://www.somehost.tv/sitetest/", 
      "http://www.somehost.tv/site/", 
      "http://www.somehost.tv/sitedev/index.html", 
      "http://www.somehost.tv/sitetest/index.html", 
      "http://www.somehost.tv/site/index.html"] 
      
          function getRepeatedSub(arr) { 
           var srt = arr.concat().sort(); 
           var a = srt[0]; 
           var b = srt.pop(); 
           var s = a.length; 
           while (!~b.indexOf(a.substr(0, s))) { 
            s-- 
           }; 
           return a.substr(0, s); 
          } 
      console.log(getRepeatedSub(urls)); //http://www.somehost.tv/site 
      


    는 Heres는 JSBin