간단하게 유지하십시오! 가질 수있는 것보다는 가질 수없는 것을 말하십시오. :)
위에서 언급했듯이 URL은 특히 '?'뒤에 매우 복잡 할 수 있으며 모든 URL이 'www'로 시작되는 것은 아닙니다. 예 :maps.bing.com/something?key=!"£$%^*()&lat=65&lon&lon=20
따라서 모든 복잡한 경우를 충족시키지 못하고 유지하기가 어려운 복잡한 정규 표현식을 사용하는 것보다 훨씬 간단한 방법은 실제로 연습에 도움이됩니다.
시합
http(s):// (anything but a space)+
www. (anything but a space)+
'아무것도'가 [^'"<>\s]
기본적으로 욕심이 일치하는 곳으로 공간, 인용문, 꺾쇠 괄호 또는 줄 끝을 충족시킵니다.
또한:
이 URL 형식에없는 것을 확인하는 것을 잊지 마십시오, 텍스트를 예하는 것이 포함 href="..."
또는src="..."
ref = nofollow 추가 (적절한 경우)
이 솔루션은 위에서 언급 한 라이브러리만큼 "좋은"것은 아니지만 훨씬 간단하고 실용적으로 잘 작동합니다.
if html.match( /(href)|(src)/i )) {
return html; // text already has a hyper link in it
}
html = html.replace(
/\b(https?:\/\/[^\s\(\)\'\"\<\>]+)/ig,
"<a ref='nofollow' href='$1'>$1</a>"
);
html = html.replace(
/\s(www\.[^\s\(\)\'\"\<\>]+)/ig,
"<a ref='nofollow' href='http://$1'>$1</a>"
);
html = html.replace(
/^(www\.[^\s\(\)\'\"\<\>]+)/ig,
"<a ref='nofollow' href='http://$1'>$1</a>"
);
return html;
URL regexp from Component
언급되지 않은 것이 유감 이며, 그것이하고있는 일에 대한 설명이 도움이 될 것입니다.Autolinker.js
매우 잘 주석을 달았으며 테스트를 거쳤습니다. Vebjorn Ljosa의 답변urlize.js
에 링크 된 라이브러리 는 테스트가 없지만 기능적이고 잘 유지됩니다.