Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 문자열에 포함된 숫자 값 추출하기

문자열 "abcdef 30"과 같이 텍스트와 숫자가 섞여 있을 때 숫자만 추출하려면 정규식(Regular Expression)을 활용해야 합니다. 단순히 parseInt()만 사용하면 문자열이 숫자로 시작하지 않는 경우 NaN(Not a Number)을 반환하게 됩니다.

정규식과 match(), parseInt() 조합

해결 방법은 간단합니다. String 객체의 match() 메서드에 정규식 /\d+/을 적용하여 문자열 내의 숫자 부분을 먼저 찾아낸 뒤, 그 결과를 parseInt()로 감싸면 원하는 정수 값을 얻을 수 있습니다.

예제 코드

<!DOCTYPE html>
<html>
   <body>
      <script>
         var myStr = "abcdef 30";
         var num = parseInt(myStr.match(/\d+/))
         alert(num);
      </script>
   </body>
</html>

코드 설명

/\d+/는 하나 이상의 연속된 숫자(digit)와 일치하는 정규식 패턴입니다. match() 메서드는 이 패턴과 일치하는 첫 번째 결과를 배열 형태로 반환하며, parseInt()는 해당 결과를 정수형 숫자 30으로 변환합니다.

추가 팁: parseFloat() 활용하기

소수점이 포함된 숫자를 추출해야 하는 경우에는 parseInt() 대신 parseFloat()을 사용하면 됩니다.

var myStr = "price 19.99 dollars";
var num = parseFloat(myStr.match(/\d+(\.\d+)?/));
console.log(num); // 19.99

또한 여러 개의 숫자가 포함된 문자열이라면 전역 플래그(g)를 추가한 /\d+/g 패턴과 match()를 조합하면 모든 숫자를 배열로 한 번에 가져올 수 있습니다.