문자열 내 url 추출하기 문제..?

카카오톡처럼 메시지에 url이 있으면 파란글씨로 바꿔주는 거 처럼

문자열에서 url이 있으면 뽑아내려고해요

아래 코드처럼했는데

function validURL(text) {
  var res = text.match(/(?:(?:(https?|ftp|telnet):\/\/|[\s\t\r\n\[\]\`\<\>\"\'])((?:[\w$\-_\.+!*\'\(\),]|%[0-9a-f][0-9a-f])*\:(?:[\w$\-_\.+!*\'\(\),;\?&=]|%[0-9a-f][0-9a-f])+\@)?(?:((?:(?:[a-z0-9\-가-힣]+\.)+[a-z0-9\-]{2,})|(?:[\d]{1,3}\.){3}[\d]{1,3})|localhost)(?:\:([0-9]+))?((?:\/(?:[\w$\-_\.+!*\'\(\),;:@&=ㄱ-ㅎㅏ-ㅣ가-힣]|%[0-9a-f][0-9a-f])+)*)(?:\/([^\s\/\?\.:<>|#]*(?:\.[^\s\/\?:<>|#]+)*))?(\/?[\?;](?:[a-z0-9\-]+(?:=[^\s:&<>]*)?\&)*[a-z0-9\-]+(?:=[^\s:&<>]*)?)?(#[\w\-]+)?)/gmi);
  return (res)
};

var msg = `주소는 naver.com입니다 dd.ddd`;

if (validURL(msg) !=null){
	console.log(validURL(msg))
}

문제는 dd.ddd 이런것도 url로 인식해버리니… (카톡에서는 인식안됨)
한 15년전 같으면 그냥 쓰겠는데 요즘에는 한글 도메인도 많아져서
한국인터넷진흥원.한국 이런거는 또 인식을 못하더라구요 (카톡에서는 인식됨)

카톡이 어떤 방법을 썼을까요…
어떻게 하면 좋을지 조언 구해봅니당…

.com, .net 같은 도메인에대한 검사 수식도 포함해 주시는게 좋을것 같습니다.(주로 많이 쓰는걸로만 해도 충분할것 같긴해요) 방금 봤는데 카톡도 dd.dd 는 url 로 인식을 안하네요.

아니면 유명라이브러리 (jQuery나 Autolink) 내부 모듈을 까보셔서 어떻게 하고 있는지 보시는것도 좋을것 같습니다.

http request 해서 response가 있으면 링크로 인식하는 것도 방법이라 생각합니다.

2개의 좋아요