문자열로 표현된 숫자에서 불필요한 선행 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)에 매우 유용합니다.