단어가 아닌 문자(Non-word Characters)란?
문자열을 처리하다 보면 알파벳, 숫자 등 의미 있는 텍스트 외에 특수 기호나 불필요한 문자들이 섞여 있는 경우가 많습니다. 이럴 때 정규 표현식(Regular Expression)을 활용하면 손쉽게 원하는 문자만 남길 수 있습니다.
핵심 원리는 매우 간단합니다. 정규 표현식 패턴으로 단어가 아닌 문자(non-word characters)를 찾아낸 뒤, 해당 문자들을 빈 문자열('')로 교체(replace)하면 됩니다.
예제 코드
다음 예제에는 다양한 특수 문자가 섞여 있으며, 그 사이에 "Tutorix is the best e-learning platform"이라는 문장이 존재합니다. 정규 표현식을 사용해 단어가 아닌 문자들을 모두 빈 문자열로 치환하면, 깔끔한 텍스트만 출력 결과로 얻을 수 있습니다.
<html>
<body>
<script type="text/javascript">
function remNonWord(string) {
if ((string === null) || (string === ''))
return false;
else
string = string.toString();
var PATTERN = /[^\x20\x2D0-9A-Z\x5Fa-z\xC0-\xD6\xD8-\xF6\xF8-\xFF]/g;
return string.replace(PATTERN, '');
}
document.write(remNonWord('Tutorix is the ~!@^&";\'/?>#$%*()+`={}[]|\\:<.,best e-learning platform'));
</script>
</body>
</html>
실행 결과
Tutorix is the best e-learning platform
코드 상세 설명
위 코드의 핵심은 PATTERN 변수에 담긴 정규 표현식입니다. 대괄호 안의 ^ 기호는 부정(negation)을 의미하며, 즉 나열된 문자 범위에 포함되지 않는 모든 문자를 찾아냅니다.
- \x20: 공백 문자
- \x2D: 하이픈(-)
- 0-9: 숫자
- A-Z, a-z: 영문 알파벳 대소문자
- \xC0-\xFF: 확장 라틴 문자(악센트가 포함된 유럽권 문자 등)
패턴 끝의 g 플래그는 전역(global) 검색을 의미하여, 문자열 전체에서 일치하는 모든 문자를 한 번에 치환합니다. 또한 함수 초반부에 null이나 빈 문자열이 입력될 경우 false를 반환하도록 예외 처리를 해두어 코드의 안정성을 높였습니다.