다양한 방법으로 문자열에서 숫자만 추출할 수 있습니다. 예제와 함께 알아보겠습니다.

1. 정규표현식으로 숫자 추출

replace(pattern, repl)은 문자열에서 패턴에 일치하는 문자열을 찾고 repl로 교체합니다.

  • \D : 숫자가 아닌 문자로, [^0-9]와 동일한 의미의 정규식
  • str.replace(/\D/g, "") : 숫자가 아닌 문자를 ""으로 대체하여 제거

아래와 같이 문자열에서 숫자가 아닌 문자를 제거하여, 숫자만 추출할 수 있습니다.

let str = "abc123def456ghi";
let numbersOnly = str.replace(/\D/g, "");
console.log(numbersOnly);

Output:

123456

2. filter()로 숫자 추출

str.split('')는 문자열을 문자 단위로 분리하며, 각 문자 별로 filter(함수)를 수행합니다. 함수의 결과가 true인 문자들만 모아서 join('')으로 연결합니다.

  • isNaN(char) : is Not a Number의 의미로, 문자 char가 숫자로 변환 가능한 경우 true를 리턴
  • filter(char => !isNaN(char)) : char가 숫자인 경우만 모아서 배열로 리턴

아래와 같이 문자열에서 숫자만 추출할 수 있습니다.

let str = "abc123def456ghi";
let numbersOnly = str.split('').filter(char => !isNaN(char)).join('');
console.log(numbersOnly);

Output:

123456

3. for문으로 숫자 추출

isNaN()과 for문을 사용하여 아래와 같이 문자열에서 숫자만 추출할 수 있습니다.

  • isNaN(char) : is Not a Number의 의미로, 문자 char가 숫자로 변환 가능한 경우 true를 리턴
let str = "abc123def456ghi";

let numbersOnly = "";
for (let i = 0; i < str.length; i++) {
  if (!isNaN(str[i])) {
    numbersOnly += str[i];
  }
}

console.log(numbersOnly);

Output:

123456