정규식(RegExp)에서 \W 메타문자는 단어 문자(word character)가 아닌 문자, 즉 비단어 문자를 찾을 때 사용합니다.
여기서 말하는 단어 문자란 영문 소문자(a~z), 대문자(A~Z), 숫자(0~9), 그리고 밑줄(_)을 의미합니다. 이 범위에 속하지 않는 공백, 특수문자, 기호 등은 모두 비단어 문자로 간주됩니다.
\W 메타문자의 역할
\W는 [^a-zA-Z0-9_]와 동일한 의미를 가집니다. 즉, 대괄호 표기법으로 단어 문자를 제외하는 것과 같은 결과를 냅니다. 입력 문자열에 단어 문자 외의 문자가 하나라도 포함되어 있으면 매칭에 성공합니다.
예제 코드
// 비단어 문자가 포함된 경우:
console.log(/\W/.test(" ")) // true (공백)
console.log(/\W/.test(".!@#")) // true (특수문자)
// 비단어 문자가 포함되지 않은 경우:
console.log(/\W/.test("a")) // false (영문 소문자)
console.log(/\W/.test("B")) // false (영문 대문자)
console.log(/\W/.test("9")) // false (숫자)
console.log(/\W/.test("_")) // false (밑줄)실행 결과
true true false false false false
코드 설명
위 예제에서 .test() 메서드는 정규식 패턴과 문자열이 일치하면 true, 일치하지 않으면 false를 반환합니다. 공백과 특수문자는 단어 문자에 해당하지 않으므로 true가 출력되고, 알파벳·숫자·밑줄은 단어 문자이므로 false가 출력됩니다.
참고: 반대 개념인 \w
\W와 정반대로 작동하는 \w 메타문자는 단어 문자 자체를 찾습니다. 두 메타문자는 대소문자만 다르지만 완전히 상반된 결과를 반환하므로 함께 익혀두면 유용합니다.
활용 예시
\W는 사용자 입력값 검증, 불필요한 특수문자 제거, 문자열 분리(split) 등 다양한 상황에서 활용됩니다. 예를 들어 str.split(/\W+/)처럼 사용하면 특수문자를 기준으로 문자열을 손쉽게 나눌 수 있습니다.