JavaScript로 문자열을 다루다 보면, 해당 문자열이 물음표(?), 마침표(.), 쉼표(,) 같은 구두점(punctuation)으로 시작하는지 확인해야 하는 경우가 있습니다. 이럴 때 정규 표현식(Regular Expression)을 활용하면 간단하게 처리할 수 있습니다.
예제 상황
예를 들어 아래와 같은 두 개의 문자열이 있다고 가정해 보겠습니다. 두 번째 문장은 물음표(?) 즉, 구두점으로 시작합니다.
var sentence1 = 'My Name is John Smith.' var sentence2 = '? My Name is John Smith.'
이 두 문장 중 어떤 것이 구두점으로 시작하는지 확인하는 코드는 다음과 같습니다.
구현 코드
먼저 문자열의 시작(^)에 구두점이 있는지 검사하는 정규 표현식을 정의합니다. 여기서는 마침표(.), 쉼표(,), 콜론(:), 느낌표(!), 물음표(?)를 대상으로 합니다.
var punctuationDetailsRegularExpression = /^[.,:!?]/
var sentence1 = 'My Name is John Smith.'
var output1 = !!sentence1.match(punctuationDetailsRegularExpression)
if (output1 == true)
console.log("This (" + sentence1 + ") starts with a punctuation");
else
console.log("This (" + sentence1 + ") does not start with a punctuation");
var sentence2 = '? My Name is John Smith.'
var output2 = !!sentence2.match(punctuationDetailsRegularExpression)
if (output2 == true)
console.log("This (" + sentence2 + ") starts with a punctuation");
else
console.log("This (" + sentence2 + ") does not start with a punctuation");코드 설명
/^[.,:!?]/: 캐럿(^)은 문자열의 시작을 의미하며, 대괄호 안의 문자 중 하나가 맨 앞에 오는지 검사합니다.sentence.match(...): 정규 표현식과 일치하면 결과 배열을 반환하고, 일치하지 않으면null을 반환합니다.!!(더블 논리 부정) : match 결과를 명확한 불리언 값(true/false)으로 변환해 줍니다.
프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 사용합니다.
node fileName.js
여기서는 파일 이름이 demo209.js라고 가정합니다.
실행 결과
프로그램을 실행하면 아래와 같은 출력 결과를 확인할 수 있습니다.
PS C:\Users\Amit\javascript-code> node demo209.js This (My Name is John Smith.) does not start with a punctuation This (? My Name is John Smith.) starts with a punctuation
결과를 보면 첫 번째 문장은 일반 문자로 시작하기 때문에 "구두점으로 시작하지 않는다"고 판별되었고, 두 번째 문장은 물음표(?)로 시작하기 때문에 "구두점으로 시작한다"고 올바르게 판별된 것을 알 수 있습니다.
추가 팁: startsWith() 메서드 활용
ES6 이상 환경이라면 startsWith() 메서드와 정규 표현식을 조합한 test() 메서드를 사용할 수도 있습니다.
const regex = /^[.,:!?]/; const str = '? Hello World'; console.log(regex.test(str)); // true
test() 메서드는 일치 여부를 바로 불리언으로 반환하므로 코드가 더욱 간결해집니다. 상황에 맞게 적절한 방법을 선택하여 사용하시기 바랍니다.