\w vs \W: 무엇이 다를까?
JavaScript 정규식에서 \w와 \W는 서로 반대되는 역할을 합니다. \w는 영문자, 숫자, 밑줄(_)과 같은 '단어 문자(word characters)'를 찾는 데 사용되고, \W는 &, ^, % 등 단어 문자에 속하지 않는 '비단어 문자(non-word characters)'를 찾는 데 사용됩니다. 아래에서 두 패턴의 문법과 실제 활용 예제를 자세히 살펴보겠습니다.
문법 1: 단어 문자 찾기
new RegExp("\\w", "g");위 코드는 JavaScript에서 단어 문자를 찾기 위한 기본 문법입니다.
문법 2: 비단어 문자 찾기
new RegExp("\\W", "g");위 코드는 JavaScript에서 비단어 문자를 찾기 위한 기본 문법입니다.
예제 1: \w로 단어 문자 찾기
다음 예제에서는 \w 패턴에 전역 검색 플래그인 'g'를 함께 사용했습니다. 만약 'g' 플래그를 사용하지 않으면 일치하는 첫 번째 단어 문자 하나만 출력됩니다. 하지만 여기서는 전역 플래그를 적용했기 때문에 문자열에 포함된 모든 영숫자(alphanumeric) 문자가 출력 결과에 표시됩니다.
<html> <body> <script> var str = "**Tutorix is the best e-learning platform%!"; var regpat = /\w/g; var result = str.match(regpat); document.write(result); </script> </body> </html>
출력 결과
T,u,t,o,r,i,x,i,s,t,h,e,b,e,s,t,e,l,e,a,r,n,i,n,g,p,l,a,t,f,o,r,m
출력 결과를 보면 별표(*), 공백, %, ! 같은 특수 문자는 모두 제외되고 알파벳 문자만 순서대로 추출된 것을 확인할 수 있습니다.
예제 2: \W로 비단어 문자 찾기
다음 예제에서는 \W 패턴을 사용했기 때문에 출력 결과에 비단어 문자만 표시됩니다. 마찬가지로 전역 플래그 'g'를 사용하지 않으면 첫 번째 비단어 문자 하나만 출력되지만, 'g' 플래그가 적용되어 있어 문자열 내의 모든 비단어 문자가 출력됩니다.
<html> <body> <script> var str = "**Tutorix is the best e-learning platform%!"; var regpat = /\W/g; var result = str.match(regpat); document.write(result); </script> </body> </html>
출력 결과
*,*, , , , ,-, ,%,!
이처럼 \w와 \W는 대소문자 구분만으로 완전히 반대되는 매칭 결과를 얻을 수 있습니다. 텍스트에서 특수 문자를 제거하거나, 반대로 특수 문자만 골라내야 하는 상황에서 이 두 패턴을 적절히 활용하면 매우 유용합니다.