JavaScript 정규식에서 대괄호([]) 안의 숫자 범위에 포함되지 않는 문자를 찾으려면 캐럿(^) 기호를 활용하면 됩니다.
부정 문자 클래스(^)란?
대괄호 안에서 맨 앞에 ^를 붙이면, 해당 문자 집합을 제외한 나머지 모든 문자와 일치하는 '부정 문자 클래스(negated character class)'가 됩니다.
[^0-9]
예를 들어 위 패턴은 숫자 0부터 9를 제외한 모든 문자와 일치합니다. 만약 특정 범위의 숫자만 제외하고 싶다면 아래와 같이 작성할 수 있습니다.
[^4-6]
이 패턴은 4, 5, 6을 제외한 모든 문자와 일치합니다.
예제
다음 코드를 실행하면 문자열에서 4~6 범위에 속하지 않는 숫자를 어떻게 찾는지 확인할 수 있습니다.
<html>
<head>
<title>JavaScript Regular Expression</title>
</head>
<body>
<script>
var myStr = "987654";
var reg = /[^4-6]/g;
var match = myStr.match(reg);
document.write(match);
</script>
</body>
</html>
실행 결과
문자열 "987654"에서 4, 5, 6은 제외되고, 나머지 숫자만 배열 형태로 출력됩니다.
9,8,7
이처럼 ^ 기호를 대괄호 안에 함께 사용하면 원하지 않는 문자나 숫자 범위를 손쉽게 제외하고 매칭할 수 있습니다. 플래그 g를 추가하면 문자열 전체에서 일치하는 모든 문자를 한 번에 찾아낼 수 있습니다.