JavaScript에서 문자열 안에 포함된 숫자만 추출하거나 매칭하고 싶다면, 정규식(Regular Expression)의 \d 메타 문자를 활용하면 됩니다. \d는 0부터 9까지의 숫자 한 글자를 의미하며, g(global) 플래그를 함께 사용하면 문자열 전체에서 일치하는 모든 숫자를 찾을 수 있습니다.
기본 예제
아래 코드는 문자열 "5200% Demo"에서 숫자만 골라내어 출력하는 예제입니다.
<html> <head> <title>JavaScript Regular Expressions</title> </head> <body> <script> var myStr = "5200% Demo"; var reg = /\d/g; var match = myStr.match(reg); document.write(match); </script> </body> </html>
실행 결과
5,2,0,0
코드 설명
1. /\d/g\d는 숫자(digit) 한 자리를 의미하는 메타 문자입니다. 슬래시 뒤에 붙인 g 플래그는 전역 검색(global search)을 의미하여, 첫 번째 일치 항목뿐 아니라 문자열 내의 모든 숫자를 찾아냅니다.
2. match() 메서드String.prototype.match()는 정규식과 일치하는 결과를 배열 형태로 반환합니다. 위 예제에서는 ["5", "2", "0", "0"]이 반환되며, 이를 화면에 출력하면 5,2,0,0으로 표시됩니다.
참고: 연속된 숫자를 하나로 묶기
위 예제는 각 숫자를 개별적으로 추출합니다. 만약 5200처럼 연속된 숫자를 하나의 값으로 얻고 싶다면 + 수량자(quantifier)를 추가하면 됩니다.
<script> var myStr = "5200% Demo"; var reg = /\d+/g; var match = myStr.match(reg); document.write(match); // 5200 </script>
또한 \d 대신 문자 클래스 [0-9]를 사용해도 동일한 결과를 얻을 수 있으며, 두 표현은 완전히 같은 의미입니다.