유니코드 속성 이스케이프(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 플래그는 유니코드 속성 이스케이프를 해석하는 데 필수적입니다. 버튼을 클릭하면 샘플 텍스트에서 이모지만 골라내어 결과 영역에 표시됩니다.
출력 결과
위 코드를 실행하면 다음과 같은 화면이 나타납니다 −

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

버튼 클릭 시 결과 영역에 😆😀🙂😊 네 개의 이모지만 추출되어 출력되는 것을 확인할 수 있습니다.
마무리
유니코드 속성 이스케이프를 활용하면 이모지뿐만 아니라 특정 언어의 문자, 숫자, 문장부호 등을 복잡한 문자 범위 지정 없이 간결하게 처리할 수 있습니다. 다국어 텍스트 검증이나 이모지 파싱처럼 유니코드를 다뤄야 하는 상황에서 매우 유용한 기능이니 꼭 활용해 보시기 바랍니다.