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

JavaScript로 음수·숫자 범위가 포함된 하이픈 구분 문자열 분할하기

문제 상황

음수나 숫자 범위가 포함된 하이픈(-)으로 구분된 문자열이 있다고 가정해 보겠습니다.

var firstValue = "John-Smith-90-100-US";
var secondValue = "David-Miller--120-AUS";

이 문자열을 단순히 하이픈 기준으로 나누면 90-100 같은 숫자 범위나 -120 같은 음수까지 잘못 분리되는 문제가 발생합니다. 이를 해결하려면 정규 표현식(regular expression)을 활용해야 합니다.

정규 표현식 패턴 설명

여기서 사용하는 정규 표현식은 /-(?=[A-Za-z-]|\d+-\d)/ 입니다. 각 요소의 의미는 다음과 같습니다.

  • - : 하이픈 문자 자체와 일치합니다.
  • (?=...) : 전방 탐색(lookahead)으로, 실제로 문자를 소비하지 않고 뒤에 오는 패턴만 확인합니다.
  • [A-Za-z-] : 하이픈 뒤에 알파벳 또는 하이픈이 오는 경우를 의미합니다. 이름 구분자나 음수 처리에 사용됩니다.
  • \d+-\d : 하이픈 뒤에 '숫자-숫자' 형태가 이어지는 경우로, 숫자 범위를 하나의 값으로 유지합니다.

예제 코드

다음은 전체 코드입니다.

var firstValue = "John-Smith-90-100-US";
var secondValue = "David-Miller--120-AUS";

var regularExpression = /-(?=[A-Za-z-]|\d+-\d)/;

var result1 = firstValue.split(regularExpression);
var result2 = secondValue.split(regularExpression);

console.log(result1);
console.log(result2);

프로그램 실행 방법

위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다. 여기서는 파일 이름이 demo241.js라고 가정합니다.

node fileName.js

출력 결과

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

PS C:\Users\Amit\javascript-code> node demo241.js
[ 'John', 'Smith', '90-100', 'US' ]
[ 'David', 'Miller', '-120', 'AUS' ]

출력 결과를 보면 첫 번째 문자열에서는 '90-100'이 하나의 요소로 그대로 유지되었고, 두 번째 문자열에서는 '-120'이 음수로 온전하게 보존된 것을 확인할 수 있습니다. 이처럼 전방 탐색을 활용한 정규 표현식을 사용하면 일반적인 구분자와 특수한 숫자 형식을 동시에 처리할 수 있습니다.