URL 링크 자동 변환기: 텍스트 속 주소 찾는 원리

긴 설명 글이나 대화 로그 속에 섞여 있는 http, https 주소를 매번 손으로 <a> 태그로 감싸고 있다면, 이 작업은 정규식 한 줄로 자동화되는 단순한 문자열 치환입니다.

어떤 규칙으로 URL의 시작과 끝을 판별하는지, targetrel 속성이 각각 무엇을 하는지 알면 결과 HTML을 그대로 믿고 쓸 수 있습니다.

이 글은 그 판별 규칙과 속성의 동작을 입력과 결과가 어떻게 대응하는지로 정리합니다.

요약 ① URL은 http 또는 https로 시작해 공백·줄바꿈·꺾쇠괄호(< >)·큰따옴표(") 앞에서 끝나는 문자열로 인식됩니다. ② target="_blank"는 링크를 새 창(새 탭)으로 열고, rel="noopener noreferrer"는 새로 열린 창이 원래 페이지의 제어권을 가져가지 못하게 막습니다. ③ 말줄임을 켜면 화면에 보이는 텍스트만 27자로 줄고, href에 담긴 실제 주소는 원본 그대로 유지됩니다.

URL이 텍스트로만 남아 클릭이 안 되는 상황

메신저나 메모장에서 복사한 글을 게시판, 이메일 본문, 사내 위키에 붙여넣으면 http로 시작하는 주소는 그냥 문자로만 보입니다. 브라우저가 주소창이나 특정 뷰어에서 링크처럼 밑줄을 그려주는 것과, 실제 HTML 소스에 <a> 태그가 있는 것은 다른 문제입니다.

예를 들어 참고 링크가 여러 개 섞인 발표 원고나, URL이 여러 줄에 걸쳐 나오는 고객 문의 로그를 그대로 웹페이지에 옮기면 주소마다 <a href="...">를 일일이 손으로 씌워야 합니다.

링크가 두세 개면 손으로 해도 되지만, 수십 개가 섞여 있으면 하나씩 찾아 감싸는 작업 자체가 번거롭습니다.

도구 없이 정규식으로 직접 링크로 바꾸는 방법

이 변환은 서버나 별도 프로그램 없이, 정규식 치환 한 번으로 끝나는 작업입니다. 정규식을 지원하는 편집기나 짧은 코드 한 줄만 있으면 손으로도 같은 결과를 만들 수 있습니다.

핵심이 되는 정규식은 다음과 같습니다.

/(https?:\/\/[^\s\r\n<>"]+)/g

이 패턴은 두 부분으로 나뉩니다.

  • https?:\/\/http:// 또는 https://로 시작하는 지점을 찾습니다. s?는 s가 있어도 없어도 매칭된다는 뜻이라 http와 https를 한 번에 잡아냅니다.
  • [^\s\r\n<>"]+ — 그 뒤로 공백, 줄바꿈, 꺾쇠괄호(< >), 큰따옴표(")가 아닌 문자를 하나 이상 이어 붙입니다. 이 다섯 가지 중 하나를 만나는 순간 URL이 끝났다고 판단합니다.

찾아낸 문자열을 <a href="찾은 URL">찾은 URL</a> 형태로 바꿔 끼우면 됩니다. 자바스크립트로 옮기면 다음 한 줄입니다.

text.replace(/(https?:\/\/[^\s\r\n<>"]+)/g, '<a href="$1">$1</a>')

여기에 새 창 열기나 보안 속성을 더하고 싶으면 치환 문자열에 속성을 추가하면 됩니다.

text.replace(/(https?:\/\/[^\s\r\n<>"]+)/g, '<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>')

targetrel은 각각 다른 역할을 하는 속성입니다.

  • target="_blank" — 링크를 클릭했을 때 현재 탭이 아니라 새 탭(새 창)에서 열리게 합니다.
  • rel="noopener noreferrer" — 새 탭이 원래 페이지의 window.opener 참조를 갖지 못하게 막습니다. 이 참조가 남아 있으면 새로 열린 페이지가 자바스크립트로 원래 탭의 주소를 바꿀 수 있는데, noopener가 그 경로를 막고 noreferrer는 리퍼러 정보 전달까지 막습니다.

이 정규식과 치환 로직을 그대로 옮기면 도구 없이도 같은 결과를 얻을 수 있습니다. 다만 URL이 여러 개 섞여 있고 새창·보안속성·말줄임 옵션을 매번 손으로 켜고 끄려면, 그때마다 정규식과 치환 문자열을 고쳐 써야 합니다.

저희 도구로 확인하기.

텍스트 내 URL 자동 감지 및 하이퍼링크 변환기

가입 없이 무료로 사용할 수 있으며, 입력이 바뀌는 즉시 결과가 갱신됩니다.

자주 헷갈리는 부분

말줄임을 켜도 링크 주소(href)는 줄어들지 않습니다. 화면에 보이는 텍스트만 27자로 잘리고 뒤에 "..."이 붙습니다.

실제로 클릭했을 때 이동하는 곳은 원본 URL 그대로입니다. 표시 텍스트와 href를 같은 것으로 착각하면 "짧아진 주소를 복사해도 되는 줄" 오해가 생깁니다.

class 속성은 링크의 겉모습을 CSS로 따로 지정하기 위한 이름표입니다.

  • 입력란에 class 값을 넣으면 결과 <a> 태그에 class="입력한값"이 그대로 붙습니다.
  • 이 이름을 스타일시트의 선택자로 쓰면 색상, 밑줄 여부, hover 효과 등을 별도로 정할 수 있습니다.
  • class를 비워두면 <a> 태그에 class 속성 자체가 붙지 않습니다.

옵션별로 결과 HTML에 실제로 무엇이 붙는지 정리하면 다음과 같습니다.

옵션켜짐(체크)꺼짐(미체크)
새창 열기target="_blank" 추가, 새 탭에서 열림속성 없음, 현재 탭에서 이동
보안 속성rel="noopener noreferrer" 추가속성 없음
긴 URL 말줄임30자 초과 시 화면 텍스트만 27자+"..."로 표시(href는 원본 유지)원본 URL 전체가 화면 텍스트로도 표시

이 정규식은 공백·줄바꿈·꺾쇠괄호·따옴표만 URL의 종료 기준으로 삼습니다. 그래서 "이 글(https://example.com)을 보세요"처럼 URL 뒤에 괄호나 마침표, 쉼표가 바로 붙어 있으면 그 문장부호까지 링크 문자열에 함께 포함됩니다.

문장부호를 링크에서 빼려면 원본 텍스트에서 URL과 문장부호 사이에 공백을 넣어두면 됩니다.

정리

  • URL 인식 기준은 http:// 또는 https://로 시작해서 공백·줄바꿈·<·>·" 중 하나를 만나기 전까지입니다.
  • target="_blank"는 새 탭에서 열리게 하고, rel="noopener noreferrer"는 새 탭이 원래 페이지를 조작하지 못하게 막는, 서로 다른 역할의 두 속성입니다.
  • 말줄임은 화면에 보이는 텍스트만 27자로 줄일 뿐, href에 담긴 실제 이동 주소는 원본 그대로 유지됩니다.
  • class 값을 넣으면 결과 <a> 태그에 그 값이 그대로 붙어 CSS로 스타일을 따로 지정할 수 있습니다.
  • URL 뒤에 공백 없이 붙은 문장부호는 링크 문자열에 함께 포함됩니다.
텍스트 내 URL 자동 감지 및 하이퍼링크 변환기

가입 없이 무료로 사용할 수 있으며, 입력이 바뀌는 즉시 결과가 갱신됩니다.

자주 묻는 질문

텍스트에 URL이 여러 개 있으면 전부 한 번에 바뀌나요?

네. 정규식 끝에 붙은 g(global) 플래그가 텍스트 전체를 훑으면서 일치하는 문자열을 모두 찾아 바꾸도록 합니다. 첫 번째 URL만 찾고 멈추지 않고, 입력한 텍스트 안의 http·https 주소를 전부 링크로 바꿉니다.

www.example.com처럼 http가 없는 주소도 링크로 바뀌나요?

바뀌지 않습니다. 정규식이 https?://로 시작하는 문자열만 찾기 때문에, 프로토콜 표기가 빠진 주소는 인식 대상에서 제외됩니다. 링크로 바꾸려면 원본 텍스트에 http:// 또는 https://를 붙여야 합니다.

미리보기와 소스코드는 어떻게 다른가요?

미리보기는 변환된 HTML을 실제로 렌더링해서 보여주는 화면으로, 링크가 밑줄이나 색으로 표시되고 클릭도 됩니다. 소스코드는 그 결과를 만든 <a href="...">...</a> 형태의 HTML 텍스트 자체이며, 그대로 복사해 다른 문서나 코드에 붙여넣을 수 있습니다.

입력을 바꾸면 버튼을 눌러야 결과가 갱신되나요?

아니요. 별도의 변환 버튼이 없습니다. textarea의 입력이 바뀌는 change 이벤트마다 정규식 매칭과 치환이 다시 계산되어, 미리보기와 소스코드에 즉시 반영됩니다.

가격 보기카톡 무료 상담