영어만 쓸 때는 [a-zA-Z]로 충분하지만, 다국어를 처리하려면 유니코드 문자 클래스가 필요하다.
유니코드 카테고리
p{L}은 모든 언어의 문자를 매칭한다. Letter의 L. 한글, 일본어, 아랍어 다 된다. 정규표현식 테스터에서 다국어 텍스트로 테스트해보자.
스크립트 지정
p{Script=Hangul} 이러면 한글만 매칭. p{Script=Hiragana}는 히라가나만.
JavaScript 지원
ES2018부터 u 플래그와 함께 유니코드 속성 이스케이프를 지원한다. /p{L}/u 이렇게 쓴다. 테스터로 지원 여부와 결과를 확인하자.
에러 처리 고려하기
잘못된 정규표현식은 런타임 에러를 일으킬 수 있다. 동적으로 패턴을 만들 때는 try-catch로 감싸거나 미리 검증하자. 정규표현식 테스터에서 문법 오류를 미리 확인할 수 있다.
유니코드 처리
한글이나 이모지 같은 유니코드 문자를 처리할 때는 u 플래그가 필요할 수 있다. 다국어 지원이 필요하면 유니코드 문자 클래스를 활용하자.
보안 측면에서
사용자 입력으로 정규표현식을 만들면 ReDoS 공격에 취약할 수 있다. 신뢰할 수 없는 입력을 패턴으로 쓰지 말고, 꼭 필요하면 타임아웃을 설정하자. 테스터로 다양한 입력에 대한 동작을 확인하고 안전하게 사용하자.
복잡한 문자열 처리가 필요할 때 gimo.kr 정규표현식 테스터를 활용하면 패턴 작성과 검증이 훨씬 수월해진다. 실무에서 자주 쓰이는 패턴들을 익혀두면 생산성이 크게 올라간다.