2014-01-15 1 views
1

이것은 아마도 쉽습니다 만, 저는 javascript 특히 정규 표현식에별로 좋지 않습니다. 부분 문자열을 .substr() 또는 .substring()으로 가져 오는 방법이 있다는 것을 알고 있습니다. URL 문자열의 색인 위치를 알고 있지만 텍스트가 데이터베이스에서로드 된 경우 나에게 쉽습니다.요소 안에 유효한 모든 유효한 URL 문자열을 추출하십시오 (JavaScript)

샘플 HTML :

<div> 
<p>Some text text text text http://stackoverflow.com text text 
    text http://google.com text text text. 
</p> 
</div> 

나는 각 URL 문자열 출력으로 배열 안에 밀어합니다.

var mystrings = new Array 
var text = $('p').text(); 
var url = text.substr()//don't know the logic here 
mystrings.push(url); 
//output 
mystrings[0] == 'http://stackoverflow.com' 
mystrings[1] == 'http://google.com' 

나는이 정규식을 발견하지만 난 그것을 통합하는 방법을 모른다 :

var regexp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 

답변

0

체크 아웃이 JSFiddle. text 변수의 정규 표현식을 실행하려면 RegExp.exec()을 사용하십시오. 표현식에 g 글로벌 수정자가 있으므로 while 루프는 문자열에서 일치하는 각 URL을 검토합니다.

var mystrings = new Array; 

var text = $('p').text(); 
var regexp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 

while (matches = regexp.exec(text)) 
{ 
    mystrings.push(matches[0]); 
} 

console.log(mystrings); 
// ["http://stackoverflow.com", "http://google.com"] 
+0

이것은 최고입니다. 많은 감사합니다! –

관련 문제