AI Briefing

개발자들이 꺼려하는 까칠한 규식이 형

·2020.03.13 10:00

핵심 내용

특수 문자 제거 정규식의 한계를 극복하기 위해 한글, 영문, 숫자 외 문자를 제외하는 유니코드 기반 최종 정규식을 적용했다.

자세히 보기

주문자 이름 입력 시 백엔드 오류를 방지하기 위해 특수 문자를 제거하는 과정에서 **정규식(Regular Expression)**의 복잡한 구조로 인해 개발자들이 어려움을 겪는 사례가 소개되었다. 초기에는 스택 오버플로우에서 찾은 일반적인 특수 문자 나열 방식을 적용했으나, 정의되지 않은 특수 문자가 유입되어 필터링이 실패하는 문제가 발생했다.

정규식의 기본 구조와 한계

정규식은 i(대소문자 무시), g(전체 매치), m(다중 행) 플래그와 함께 \w, \s, . 등 다양한 표현식을 조합하여 사용된다. 초기 해결책인 txt.replace(/[...]/g, '') 방식은 특정 특수 문자 목록을 직접 나열하는 방식이었다. 하지만 특수 문자의 종류가 무한대에 가까워 모든 경우를 나열하는 것은 비현실적이며, 이로 인해 배포 후에도 주문자 이름에 특수 문자가 다시 입력되는 현상이 재발했다.

유니코드 기반의 화이트리스트 전략

문제를 해결하기 위해 '특수 문자를 나열하는 방식'에서 '허용된 문자(한글, 영문, 숫자, 공백) 외의 모든 문자를 제외하는 방식'으로 접근법을 전환했다. Slack 채널을 통한 협업(SDD)을 거쳐 최종적으로 유니코드 범위를 명시한 정규식을 완성했다.

최종 정규식(filterRegex)은 다음과 같은 유니코드 범위를 포함한다:

  • \uAC00-\uD7A3: 한글 완성형 (가-힣)
  • \u3131-\u314E: 한글 자모 (자음)
  • \u314F-\u3163: 한글 자모 (모음)
  • \w, \s: 영문, 숫자, 언더스코어, 공백

이 방식은 euc-kr 인코딩 환경에서도 안정적으로 작동하며, 천지인 키보드 문자(\u119E, \u11A2 등)까지 고려하여 예외 상황을 최소화했다. 개발자는 혼자 해결하기 어려운 정규식 문제는 팀 내 Slack 채널을 통해 공유하고 Mob Programming 방식으로 해결하는 것을 권장했다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.