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

JavaScript 정규식(Regex)으로 숫자 문자열의 선행 0 제거하기

문자열로 표현된 숫자에서 불필요한 선행 0(leading zeros)을 제거해야 하는 경우가 종종 있습니다. 예를 들어 "0006456" 같은 값은 실제 사용 시 "6456"으로 변환하는 것이 자연스럽습니다. 이럴 때 JavaScript의 replace() 메서드와 정규식(Regex)을 함께 사용하면 간단하게 해결할 수 있습니다.

정규식 패턴 설명

선행 0을 제거하는 기본 문법은 다음과 같습니다.

yourStringValue.replace(/\D|^0+/g, "")

이 정규식 패턴은 두 가지 역할을 합니다.

  • \D: 숫자가 아닌 모든 문자를 찾아 제거합니다. 즉, 입력값에 숫자 외의 문자가 섞여 있어도 걸러줍니다.
  • ^0+: 문자열 맨 앞에 연속해서 나타나는 0들을 찾아 제거합니다. 단, 값이 전부 0인 경우를 고려하려면 별도 처리가 필요할 수 있습니다.
  • g 플래그: 문자열 전체에서 일치하는 모든 부분을 대상으로 치환을 수행합니다.

예제 코드

다음과 같이 여러 개의 숫자 문자열 변수가 있다고 가정해 보겠습니다.

var theValue1 = "5001000";
var theValue2 = "100000005";
var theValue3 = "05000001";
var theValue4 = "00000000006456";

각 변수에 위 정규식을 적용한 결과를 콘솔에 출력하는 전체 예제입니다.

var theValue1 = "5001000";
var theValue2 = "100000005";
var theValue3 = "05000001";
var theValue4 = "00000000006456";

console.log(theValue1.replace(/\D|^0+/g, ""));
console.log(theValue2.replace(/\D|^0+/g, ""));
console.log(theValue3.replace(/\D|^0+/g, ""));
console.log(theValue4.replace(/\D|^0+/g, ""));

프로그램 실행 방법

위 코드를 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다. 파일 이름은 작성한 JS 파일명으로 지정하면 됩니다.

node fileName.js

실행 결과

예를 들어 파일 이름이 demo101.js라면 아래와 같이 실행합니다.

PS C:\Users\Amit\JavaScript-code> node demo101.js

실행 결과는 다음과 같습니다.

5001000
100000005
5000001
6456

결과 분석

  • "5001000" → 중간에 있는 0은 유지되고 그대로 출력됩니다. 정규식은 오직 맨 앞의 0만 제거하기 때문입니다.
  • "100000005" → 첫 글자가 0이 아니므로 변경 없이 그대로 출력됩니다.
  • "05000001" → 맨 앞의 0 하나가 제거되어 "5000001"이 됩니다.
  • "00000000006456" → 맨 앞의 연속된 0이 모두 제거되어 "6456"이 됩니다.

이처럼 replace()와 정규식 /\D|^0+/g 조합을 활용하면, 숫자가 아닌 문자 제거와 선행 0 제거를 한 번에 처리할 수 있어 입력값 정규화(input normalization)에 매우 유용합니다.