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

자바스크립트 정규식의 유니코드 속성 이스케이프(Unicode Property Escapes) 완벽 가이드

유니코드 속성 이스케이프(Unicode Property Escapes)는 ES2018에서 도입된 자바스크립트 정규식 기능입니다. u(유니코드) 플래그와 함께 사용하면 문자가 가진 유니코드 속성을 기준으로 원하는 문자를 손쉽게 매칭할 수 있습니다.

기본 문법

\p{속성명} 또는 \p{속성명=속성값} 형태로 작성합니다. 반대로 해당 속성을 가지지 않은 문자를 찾으려면 대문자인 \P를 사용하면 됩니다. 이 기능은 반드시 u 플래그와 함께 사용해야 하며, 그렇지 않으면 에러가 발생합니다.

자주 사용되는 유니코드 속성

  • Emoji_Presentation: 이모지로 표시되는 문자
  • Script: 한글(Hangul), 라틴(Latin) 등 문자 체계
  • General_Category: 숫자(Nd), 알파벳(L) 등 문자 분류
  • Alphabetic, Uppercase, Lowercase: 알파벳 및 대소문자 여부

예제

다음은 정규식을 활용해 텍스트에서 이모지만 추출하는 예제입니다 −

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    }
    .sample, .result {
        font-size: 20px;
        font-weight: 500;
}
</style>
</head>
<body>
<h1>Unicode Property Escapes JavaScript Regular Expressions</h1>
<div class="sample">Hello 😆😀 World 🙂😊</div>
<div style="color: green;" class="result"></div>
<button class="btn">CLICK HERE</button>
<h3>
Click on the above button to extract the emojis using regex
</h3>
<script>
    let sampleEle = document.querySelector(".sample").innerHTML;
    let btnEle = document.querySelector(".btn");
    let resEle = document.querySelector(".result");
    const EmojiRegEx = /\p{Emoji_Presentation}/gu;
    btnEle.addEventListener("click", () => {
        resEle.innerHTML = sampleEle.match(EmojiRegEx);
    });
</script>
</body>
</html>

코드 설명

핵심은 /\p{Emoji_Presentation}/gu라는 정규식입니다. \p{Emoji_Presentation}이 이모지로 렌더링되는 모든 문자를 의미하고, g 플래그는 일치하는 모든 문자를 찾도록 하며, u 플래그는 유니코드 속성 이스케이프를 해석하는 데 필수적입니다. 버튼을 클릭하면 샘플 텍스트에서 이모지만 골라내어 결과 영역에 표시됩니다.

출력 결과

위 코드를 실행하면 다음과 같은 화면이 나타납니다 −

자바스크립트 정규식의 유니코드 속성 이스케이프(Unicode Property Escapes) 완벽 가이드

“CLICK HERE” 버튼을 클릭하면 −

자바스크립트 정규식의 유니코드 속성 이스케이프(Unicode Property Escapes) 완벽 가이드

버튼 클릭 시 결과 영역에 😆😀🙂😊 네 개의 이모지만 추출되어 출력되는 것을 확인할 수 있습니다.

마무리

유니코드 속성 이스케이프를 활용하면 이모지뿐만 아니라 특정 언어의 문자, 숫자, 문장부호 등을 복잡한 문자 범위 지정 없이 간결하게 처리할 수 있습니다. 다국어 텍스트 검증이나 이모지 파싱처럼 유니코드를 다뤄야 하는 상황에서 매우 유용한 기능이니 꼭 활용해 보시기 바랍니다.