웹 개발을 하다 보면 "€55,600.35"나 "$645,345.50"처럼 통화 기호와 콤마가 포함된 문자열을 실제 숫자 값으로 변환해야 하는 경우가 자주 발생합니다. 예를 들어 금액을 더하거나 비교하는 계산 로직을 작성할 때는 반드시 숫자 타입으로 변환해야 합니다.
핵심 원리: replace() 메서드와 정규식(Regex) 활용
가장 간단하고 널리 사용되는 방법은 JavaScript의 replace() 메서드에 정규식을 조합하는 것입니다. 정규식 /[^0-9.-]+/g를 사용하면 숫자(0-9), 마침표(.), 마이너스(-)를 제외한 모든 문자, 즉 통화 기호(€, $ 등)와 콤마(,)를 한 번에 제거할 수 있습니다.
이후 Number() 함수로 감싸주면 문자열이 부동소수점 숫자(double)로 변환됩니다. jQuery 환경에서도 동일하게 작동하며, 별도의 플러그인 없이 순수 JavaScript만으로 처리 가능합니다.
예제 코드
var euroCurrencyValue = "€55,600.35"; var result = Number(euroCurrencyValue.replace(/[^0-9.-]+/g, "")); console.log(result); var dollarCurrencyValue = "$645,345.50"; var result1 = Number(dollarCurrencyValue.replace(/[^0-9.-]+/g, "")); console.log(result1);
프로그램 실행 방법
Node.js 환경에서 위 코드를 실행하려면 터미널에서 아래 명령어를 입력합니다. 파일 이름은 본인의 파일명으로 변경하면 됩니다.
node fileName.js
여기서는 파일 이름이 demo324.js라고 가정합니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
PS C:\Users\Amit\javascript-code> node demo324.js 55600.35 645345.5
코드 상세 설명
- 정규식 패턴 분석: 대괄호 안의
^는 부정(negation)을 의미하므로,[^0-9.-]는 '숫자, 점, 하이픈이 아닌 모든 문자'를 뜻합니다. - g 플래그: 전역(global) 검색 옵션으로, 일치하는 모든 문자를 제거합니다. 이 옵션이 없으면 첫 번째 문자만 제거됩니다.
- Number() 변환: 정리된 문자열을 숫자 타입으로 변환하여 사칙연산이 가능하게 만듭니다.
추가 팁: 안전한 변환 처리
사용자 입력값처럼 형식이 불확실한 데이터를 다룰 때는 변환 결과가 유효한지 확인하는 것이 좋습니다. isNaN()을 활용하면 잘못된 입력으로 인한 오류를 방지할 수 있습니다.
function parseCurrency(value) {
var num = Number(String(value).replace(/[^0-9.-]+/g, ""));
return isNaN(num) ? 0 : num;
}
console.log(parseCurrency("$1,234.56")); // 1234.56
console.log(parseCurrency("잘못된 입력")); // 0이처럼 replace()와 정규식만 활용하면 어떤 통화 형식이든 손쉽게 숫자로 변환할 수 있으며, 유럽식(€), 달러($), 원화(₩) 등 다양한 통화 기호에 범용적으로 적용할 수 있다는 장점이 있습니다.