2013-10-12 2 views
0

URL 내에 URL이 있는지 확인하고 필요하면 추출하십시오 (내부 URL).regexp (?) 다른 URL에서 URL 추출

그래서, 이것은 URL

http://www.outerURL.com/outerParameter1/x?u=http://innerURL.com/innerParameter1&outerParameter2/ 

내에서 URL이 확인 JQuery와없이

http://innerURL.com/innerParameter1 

를 추출해야합니다. 이것은 clien-side javascript 용입니다.

그리고 잘하면 내가 이것에 대해 어떻게 가야한다, 그것은이 템플릿이 혼자 정규식에서 수행 될 경우 잘 모르겠어요

var link; 
link = document.body.getElementsByTagName("a") 

for (var i = 0; i < link.length; i++) { 
    if (
      // URL checking here 
     ){ 
     //replacing here 
     link[i].href = link[i].href.replace(/* ??? */) 
     } 
    } 

에 적합하게? 당신이 사용할 수있는

var links = document.body.getElementsByTagName("a"); 

for (var i = 0; i < links.length; i++) { 
    var link = link[i].href, 
     m = s.match(/.(http[^&]+)/); //link.match(/u=/u=(http:[^&]+)/); 
    if (m){ 
     link.href = m[1]; 
    } 
} 
+0

을 시도인가? http 스펙은 읽기 쉽지는 않지만 'http : // innerURL.com/innerParameter1'을 URL 인코딩해서는 안됩니까? – pixelistik

답변

1

비 정규 표현식은 그 구문을 가정하는 것은 상당히 정적 :

var inner = link[i].href.indexOf('http://',1); 
inner = inner>-1 ? link[i].href.substr(inner,link[i].href.indexOf('&',inner)-inner) : false; 

inner하는 것은 잘못된 것입니다 내부 URL을 찾을 수없는 경우 또는 내부 URL 문자열이

인 경우 이 경우에도 유효한 URL은
1

뭔가

link[i].href = link[i].href.replace(/^.*?[?&]u=(http:.+?)(?:&.*|\/?)$/i, '$1'); 
+0

'/ [$] /'≠'/ $ /'. – Gumbo

+1

'[& $]'가 정확하지 않습니다 -'$'는 이런 식으로 작동하지 않습니다. 나는/u = (http : [^ &] +) /' – georg

+0

을 깨우 려하지 않았다. 나의 나쁜, 나는 대답을 지금 업데이트했다. – OneOfOne

0

/^[A-Z].+\?[A-Z]=(.*)&/gim 

http://regex101.com/r/dF3rN5

자바 스크립트

url = 'http://www.outerURL.com/outerParameter1/x?u=http://innerURL.com/innerParameter1&outerParameter2/'; 

replace = url.replace(/^[A-Z].+\?[A-Z]=(.*)&/gim, '$1'); 

// returns 'http://innerURL.com/innerParameter1outerParameter2/'