URL 슬러그 생성 공식과 소문자 하이픈 문자열 변환 규칙

슬러그(slug) 생성기

URL 주소로 빌드할 영어 타이틀이나 일반 텍스트를 기입하여 가장 표준적이고 안전한 소문자 하이픈 연결 슬러그 소스를 즉시 확보해 보세요.

웹 프레임워크나 콘텐츠 관리 시스템(CMS)을 개발할 때, 게시글의 제목 문자열을 URL 주소의 맨 뒤 세그먼트 경로로 안전하게 사용할 수 있도록 슬러그(Slug) 형태로 가공하는 공정은 현대 웹 표준 아키텍처의 필수 관문입니다.

특수문자가 가득하거나 띄어쓰기가 복잡한 한 줄의 텍스트 문장을 안전한 영문 소문자와 하이픈 구분자의 조합으로 포맷팅하는 Slugify 알고리즘은 URL의 안전성(URL-Safety)을 수학적 전산학적으로 완전하게 강제합니다. 본 글에서는 Slugify 치환 변환의 수학적 공식과 실무 구현 로직을 해설합니다.


1. 문자열 Slugify 변환의 정밀 정규식 공식

임의의 문자열 $S$를 유효한 슬러그 $S_{\text{slug}}$로 변환하는 연속적인 텍스트 치환 연산 공식은 다음과 같습니다:

  1. 소문자 정규화: 입력 텍스트 전체 영문자를 소문자로 캐스팅합니다: [ S_1 = \text{lowercase}(S) ]
  2. 비허용 특수 기호 도려내기: 알파벳 소문자, 숫자, 공백, 하이픈 이외의 모든 특수 문자(쉼표, 마침표, 골뱅이 등)를 빈 값으로 삭제합니다: [ S_2 = S_1.\text{replace}(/\text{[^a-z0-9\s-]}/g, \text{""}) ]
  3. 공백 및 연속 구분자 일괄 축약: 남은 공백들을 전부 하이픈(-) 기호로 치환하되, 연속적으로 발생한 하이픈들(---)은 지저분하지 않도록 단 1개의 하이픈으로 일괄 압축해 줍니다: [ S_{\text{slug}} = S_2.\text{trim}().\text{replace}(/\text{\s+}/g, \text{"-"}).\text{replace}(/\text{-+}/g, \text{"-"}) ]

2. URL-Safe 인코딩의 중요성과 브라우저 깨짐 현상

인코딩을 거치지 않은 공백( )이나 한글 등의 문자가 웹 브라우저 주소창에 그냥 입력되면, 브라우저는 통신 패킷 전송을 위해 이들을 **퍼센트 인코딩(Percent-Encoding)**이라는 16진수 아스키 문자열 조합으로 강제 치환해 버립니다.

  • 변환 전: my page 1
  • 변환 후 (브라우저 주소 자동 인코딩): my%20page%201 (공백이 %20으로 변환되어 주소가 지저분해짐)
  • Slugify 적용 시: my-page-1 (하이픈으로 단어가 매끄럽게 연결되어 보기에 깔끔하고 복사할 때 주소 깨짐이 없음)

[!NOTE] 블로그 글 주소를 딸 때마다 매번 주소창 인코딩 깨짐을 걱정하며 영어 문장을 치고 수동으로 하이픈을 하나씩 넣을 필요 없이, 슬러그 생성기 도구를 활용하면 일반 문장이 입력되는 즉시 표준 소문자 하이픈 슬러그 형태로 안전하게 묶어 즉시 결과물을 제공합니다.

슬러그(slug) 생성기

URL 주소로 빌드할 영어 타이틀이나 일반 텍스트를 기입하여 가장 표준적이고 안전한 소문자 하이픈 연결 슬러그 소스를 즉시 확보해 보세요.


3. 성공적인 웹 서비스 주소 설계를 위한 고려 사항

  1. 시작과 끝의 하이픈 트리밍: 슬러그 생성 가공을 마친 후 양 끝단에 매달려 있는 잔여 하이픈(-slug-name-)이 방치되어 있으면 URL 구조가 다소 이상해 보일 수 있습니다. 정규식 앞뒤 트리밍 로직(.replace(/^-+|-+$/g, ""))을 결합하여 양끝 하이픈을 깨끗하게 정리해 주는 마무리가 필수적입니다.
  2. 고유값(Unique Key) 충돌 대책: 동일한 제목의 글이 2개 이상 발행되면 슬러그 주소도 my-post로 100% 동일하게 겹쳐 라우터 엔진이 어떤 글을 열어야 할지 혼동에 빠집니다. 실무에서는 주소 충돌을 차단하기 위해 슬러그 맨 마지막 꼬리에 임의의 고유 번호 ID나 날짜 문자열(ex: my-post-1, my-post-2)을 조건 분기로 덧붙여 주소를 세분화 설계합니다.
가격 보기카톡 무료 상담