JavaScript 정규 표현식(RegExp)에서 대괄호 안에 포함되지 않은 문자, 즉 특정 문자를 제외한 나머지 모든 문자를 찾으려면 부정 문자 클래스(negated character class)를 사용해야 합니다. 이때 대괄호 안의 맨 앞에 캐럿(^) 기호를 추가하면 됩니다.
부정 문자 클래스 [^...]란?
일반적인 [...] 패턴은 대괄호 안에 나열된 문자 중 하나와 일치하지만, [^...]처럼 캐럿(^)을 맨 앞에 붙이면 그 반대로 동작합니다. 즉, 대괄호 안에 포함되지 않은 모든 문자와 일치하게 됩니다.
[^...]
예를 들어 [^m]은 문자 'm'을 제외한 모든 문자와 일치하며, [^abc]는 'a', 'b', 'c'를 제외한 모든 문자와 일치합니다.
예제 코드
아래 예제는 문자열에서 'm'이 아닌 모든 문자를 찾아 출력하는 코드입니다. 플래그 g(global)를 함께 사용하여 문자열 전체에서 일치하는 모든 문자를 찾습니다.
<html> <head> <title>JavaScript Regular Expression</title> </head> <body> <script> var myStr = "Welcome! Welcome to the website!"; var reg = /[^m]/g; var match = myStr.match(reg); document.write(match); </script> </body> </html>
실행 결과
위 코드를 실행하면 문자열 "Welcome! Welcome to the website!"에서 'm'을 제외한 나머지 모든 문자가 배열 형태로 출력됩니다. 공백과 특수문자(!)도 포함되어 출력된다는 점에 유의하세요.
정리
[^문자]: 해당 문자를 제외한 모든 문자와 일치g플래그: 문자열 전체에서 일치하는 모든 항목 검색match()메서드: 일치하는 결과를 배열로 반환
이처럼 부정 문자 클래스를 활용하면 원하지 않는 문자를 손쉽게 필터링하고, 그 외의 문자만 추출할 수 있습니다.