JavaScript - 문자열에서 숫자만 추출

자바스크립트에서 정규식을 이용하여 문자열에서 숫자만 추출하는 방법을 소개합니다.

1. 모든 숫자, 하나의 문자열로 추출

aaa123bbb456와 같이 문자 사이에 숫자들이 있을 때, 문자를 모두 제거하고 남은 숫자들을 하나의 숫자로 이어서 123456을 추출하고 싶을 때가 있습니다.

이럴 때는 아래와 같이 정규식으로 문자를 모두 제거하면 됩니다. [^0-9]는 숫자가 아닌 문자들을 의미하는 패턴이며, g는 문자열에서 모든 패턴을 찾으라는 의미입니다. replace(regex, "")을 수행하면 regex에 해당하는 모든 패턴을 찾아서 ""으로 변환합니다. 즉, 숫자가 아닌 문자들이 모두 제거됩니다. 이렇게 리턴된 숫자는 타입이 String인데, parseInt()로 Number 타입으로 변환할 수 있습니다.

const str = "Hello_123_World_456_!!!";
const regex = /[^0-9]/g;
const result = str.replace(regex, "");
const number = parseInt(result);

console.log(result);
console.log(typeof(result));

console.log(number);
console.log(typeof(number));

Output:

123456
string
123456
number

2. 연속으로 이어진 숫자, 리스트로 추출

aaa123bbb456와 같은 문자열에서 123만 추출하거나 456만 추출하고 싶을 때가 있습니다. 이럴 떄는 정규식의 match()를 이용하여 숫자 패턴을 찾으면 됩니다.

예를 들어, d+는 숫자로 된 문자 1개 이상인 문자열을 의미하며 g는 모든 패턴을 찾으라는 의미입니다. foo31bar52에서 이 패턴에 일치하는 것은 3152입니다. 그래서 리턴값을 보면 이 두개 숫자가 리턴됩니다.

let found = "foo31bar52".match(/\d+/g);
console.log(found);

Output:

[ '31', '52' ]

위와 같이 match()를 이용하여, 아래와 같이 첫번째로 찾은 숫자와 두번쨰로 찾은 숫자를 Index로 접근할 수 있습니다.

let num = "foo31bar52".match(/\d+/g)[0];
console.log(num);

num = "foo31bar52".match(/\d+/g)[1];
console.log(num);

Output:

31
52
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha