CINXE.COM
<!DOCTYPE html><html lang="tr" data-theme-enabled="1"><head><script>window.currentUser = null;</script><script>window.shopCurrency = "EUR";</script><script>window.localCurrency = "TRY";</script><script>window.countryCode = "sg";</script><script>window.rateShopTo = {"TRY":41.010376742454085,"EUR":1,"USD":1.0793366397012396,"AMD":422.57935336941915};</script><title itemprop="name">Unicode: flag "u" and class \p{...}</title><link href="/pack/styles.100020a0bc7cf13be729.css" rel="stylesheet"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes, minimum-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><!-- chrome autotranslate is enabled only for "en" main version--><meta name="google" content="notranslate"><script>if (window.devicePixelRatio > 1) document.cookie = 'pixelRatio=' + window.devicePixelRatio + ';path=/;expires=Tue, 19 Jan 2038 03:14:07 GMT';</script><link href="//fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic" rel="stylesheet"><link rel="apple-touch-icon-precomposed" href="/img/favicon/apple-touch-icon-precomposed.png"><link rel="canonical" href="https://tr.javascript.info/regexp-unicode"><meta name="msapplication-TileColor" content="#222A2C"><meta name="msapplication-TileImage" content="/img/favicon/tileicon.png"><link rel="icon" href="/img/favicon/favicon.png"><meta itemprop="image" content="https://tr.javascript.info/img/site_preview_en_512x512.png"><meta property="og:title" content="Unicode: flag "u" and class \p{...}"><meta property="og:image" content="https://tr.javascript.info/img/site_preview_en_1200x630.png"><meta property="og:image:type" content="image/png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="fb:admins" content="100001562528165"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Unicode: flag "u" and class \p{...}"><meta name="twitter:site" content="@iliakan"><meta name="twitter:creator" content="@iliakan"><meta name="twitter:image" content="https://tr.javascript.info/img/site_preview_en_512x512.png"><meta name="google-adsense-account" content="ca-pub-6204518652652613"><link rel="prev" href="/regexp-character-classes"><link rel="next" href="/regexp-anchors"><script data-collect-dnt="true" async src="https://scripts.simpleanalyticscdn.com/latest.js"></script><script>window.GA_ID = "UA-2056213-15";</script><script>window.YANDEX_METRIKA_ID = 32184394;</script><script>{function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-2LWB61WGYJ")}</script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-2LWB61WGYJ"></script><script>window.metrika={reachGoal:function(){}},window.yandex_metrika_callbacks=[function(){try{window.metrika=new Ya.Metrika({id:YANDEX_METRIKA_ID,webvisor:!0,clickmap:!0,params:{user:window.currentUser&&window.currentUser.id}}),metrika.trackLinks({delay:150}),window.addEventListener("error",function(r){window.metrika.reachGoal("JSERROR",{src:(r.filename||r.errorUrl)+": "+(r.lineno||r.errorLine),stack:r.stack||r.error&&r.error.stack,message:r.message})})}catch(r){}}];</script><script src="//mc.yandex.ru/metrika/watch.js" async></script><script>window.RECAPTCHA_ID = "6LfmLAEVAAAAAJMykMnf7aY8nkyTRmYi2ynx51R1";</script><script src="/pack/init.6423bccabee4f56b6ff8.js"></script><script src="/pack/head.fb50118fab5c8ea51243.js" defer></script><meta property="og:title" content="Unicode: flag "u" and class \p{...}"><meta property="og:type" content="article"><script src="/pack/tutorial.ba5237b93f596f9d03dc.js" defer></script><script src="/pack/footer.59b83436a1264feec8f6.js" defer></script></head><body class="no-icons"><script>window.fontTest();</script><div class="page-wrapper page-wrapper_sidebar_on"><!--[if IE]><div style="color:red;text-align:center">Üzgünüz, Internet Explorer desteklenmemektedi lütfen daha yeni bir tarayıcı kullanın.</div><![endif]--><div class="sitetoolbar sitetoolbar_tutorial"><script>window.langs = [{"code":"ar","name":"Arabic"},{"code":"az","name":"Azerbaijani"},{"code":"bg","name":"Bulgarian"},{"code":"bn","name":"Bengali"},{"code":"bs","name":"Bosnian"},{"code":"ca","name":"Catalan"},{"code":"cs","name":"Czech"},{"code":"da","name":"Danish"},{"code":"de","name":"German"},{"code":"el","name":"Greek"},{"code":"en","name":"English"},{"code":"es","name":"Spanish"},{"code":"fa","name":"Persian (Farsi)"},{"code":"fi","name":"Finnish"},{"code":"fr","name":"French"},{"code":"he","name":"Hebrew"},{"code":"hi","name":"Hindi"},{"code":"hr","name":"Croatian"},{"code":"hu","name":"Hungarian"},{"code":"hy","name":"Armenian"},{"code":"id","name":"Indonesian"},{"code":"it","name":"Italian"},{"code":"ja","name":"Japanese"},{"code":"ka","name":"Georgian"},{"code":"kk","name":"Kazakh"},{"code":"km","name":"Central Khmer"},{"code":"ko","name":"Korean"},{"code":"ku","name":"Kurdish"},{"code":"ky","name":"Kyrgyz"},{"code":"lt","name":"Lithuanian"},{"code":"me","name":"Montenegrin"},{"code":"ml","name":"Malayalam"},{"code":"ms","name":"Malay"},{"code":"my","name":"Burmese"},{"code":"nl","name":"Dutch"},{"code":"no","name":"Norvegian"},{"code":"pa","name":"Punjabi"},{"code":"pl","name":"Polish"},{"code":"pt","name":"Portuguese"},{"code":"ro","name":"Romanian"},{"code":"ru","name":"Russian"},{"code":"si","name":"Sinhala"},{"code":"sk","name":"Slovak"},{"code":"sl","name":"Slovenian"},{"code":"sq","name":"Albanian"},{"code":"sr","name":"Serbian"},{"code":"ta","name":"Tamil"},{"code":"te","name":"Telugu"},{"code":"test","name":"Test"},{"code":"th","name":"Thai"},{"code":"tk","name":"Turkmen"},{"code":"tr","name":"Turkish"},{"code":"ug","name":"Uyghur"},{"code":"uk","name":"Ukrainian"},{"code":"ur","name":"Urdu"},{"code":"uz","name":"Uzbek"},{"code":"v2","name":"v2"},{"code":"vi","name":"Vietnamese"},{"code":"zh-hant","name":"Chinese Traditional"},{"code":"zh","name":"Chinese"}];</script><script>window.lang = "tr";</script><div class="sitetoolbar__content"><div class="sitetoolbar__lang-switcher"><button class="sitetoolbar__dropdown-button" data-dropdown-toggler>TR</button><div class="sitetoolbar__dropdown-wrap"><div class="sitetoolbar__dropdown-body"><div class="sitetoolbar__lang-switcher-body"><div class="supported-langs supported-langs_toolbar"><div class="supported-langs__container"><ul class="supported-langs__list" style="height:200px"><li class="supported-langs__item"><a class="supported-langs__link" href="https://ar.javascript.info/"><span class="supported-langs__brief">AR</span><span class="supported-langs__title">عربي</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://javascript.info/regexp-unicode"><span class="supported-langs__brief">EN</span><span class="supported-langs__title">English</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://es.javascript.info/regexp-unicode"><span class="supported-langs__brief">ES</span><span class="supported-langs__title">Español</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://fa.javascript.info/regexp-unicode"><span class="supported-langs__brief">FA</span><span class="supported-langs__title">فارسی</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://fr.javascript.info/regexp-unicode"><span class="supported-langs__brief">FR</span><span class="supported-langs__title">Français</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://id.javascript.info/"><span class="supported-langs__brief">ID</span><span class="supported-langs__title">Indonesia</span></a></li></ul><ul class="supported-langs__list" style="height:200px"><li class="supported-langs__item"><a class="supported-langs__link" href="https://it.javascript.info/regexp-unicode"><span class="supported-langs__brief">IT</span><span class="supported-langs__title">Italiano</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://ja.javascript.info/regexp-unicode"><span class="supported-langs__brief">JA</span><span class="supported-langs__title">日本語</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://ko.javascript.info/regexp-unicode"><span class="supported-langs__brief">KO</span><span class="supported-langs__title">한국어</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://learn.javascript.ru/regexp-unicode"><span class="supported-langs__brief">RU</span><span class="supported-langs__title">Русский</span></a></li><li class="supported-langs__item supported-langs__item_current"><a class="supported-langs__link" href="https://tr.javascript.info/"><span class="supported-langs__brief">TR</span><span class="supported-langs__title">Türkçe</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://uk.javascript.info/regexp-unicode"><span class="supported-langs__brief">UK</span><span class="supported-langs__title">Українська</span></a></li></ul><ul class="supported-langs__list" style="height:20px"><li class="supported-langs__item"><a class="supported-langs__link" href="https://zh.javascript.info/regexp-unicode"><span class="supported-langs__brief">ZH</span><span class="supported-langs__title">简体中文</span></a></li></ul></div><div class="supported-langs__text"><p>Bu açık-kaynaklı projenin tüm dünyada kullanılabilir olmasını istiyoruz.</p> <p>Kendi dilinizde çeviriye <a href="https://javascript.info/translate">yardım edebilirsiniz</a>!</p> </div></div></div></div></div></div><div class="sitetoolbar__logo-wrap"><a class="sitetoolbar__link sitetoolbar__link_logo" href="/"><img class="sitetoolbar__logo sitetoolbar__logo_normal" src="/img/sitetoolbar__logo_en.svg" width="200" alt="" role="presentation"/><img class="sitetoolbar__logo sitetoolbar__logo_normal sitetoolbar__logo_dark" src="/img/sitetoolbar__logo_en-white.svg" width="200" alt="" role="presentation"/><img class="sitetoolbar__logo sitetoolbar__logo_small" src="/img/sitetoolbar__logo_small_en.svg" width="70" alt="" role="presentation"/><img class="sitetoolbar__logo sitetoolbar__logo_small sitetoolbar__logo_dark" src="/img/sitetoolbar__logo_small_en-white.svg" width="70" alt="" role="presentation"/><script>Array.prototype.forEach.call(document.querySelectorAll("img.sitetoolbar__logo"),function(e){let t=document.createElement("object");t.type="image/svg+xml",t.className=e.className,t.style.cssText="left:0;top:0;position:absolute",t.onload=function(){t.onload=null,e.style.visibility="hidden"},t.data=e.src,e.parentNode.insertBefore(t,e)});</script></a></div><div class="sitetoolbar__nav-toggle-wrap"><button class="sitetoolbar__nav-toggle" type="button"></button></div><nav class="sitetoolbar__sections"><ul class="sitetoolbar__sections-list"></ul></nav><div class="sitetoolbar__right-button-wrap"><a class="sitetoolbar-right-button sitetoolbar-right-button_courses" href="/ebook"><span class="sitetoolbar-right-button__extra-text">Satın al</span>EPUB/PDF</a></div><div class="sitetoolbar__theme-switcher"><div class="theme-changer"><label class="theme-changer__label" for="theme-changer-input" data-tooltip="Change theme"><input class="theme-changer__input" type="checkbox" id="theme-changer-input" data-theme-changer="data-theme-changer"/><span class="theme-changer__icon theme-changer__icon_light-theme"></span><span class="theme-changer__icon theme-changer__icon_dark-theme"></span></label></div></div><div class="sitetoolbar__search-wrap"><div class="sitetoolbar__search-content"><button class="sitetoolbar__search-toggle" type="button"></button><form class="sitetoolbar__search" method="GET" action="/search"><div class="sitetoolbar__search-input"><div class="text-input"><input class="text-input__control" name="query" placeholder="Javascript.info'da ara" required="required" type="text"/></div><button class="sitetoolbar__find" type="submit">Ara</button></div></form></div></div></div><div class="tablet-menu"><div class="tablet-menu__line"><div class="tablet-menu__content"><form class="tablet-menu-search" action="/search/"><input class="tablet-menu-search__input" type="search" name="query" placeholder="Eğitimde ara" required="required"/><button class="tablet-menu-search__button" type="submit" name="type" value="articles">Ara</button></form></div></div><div class="tablet-menu__line"><div class="tablet-menu__content"><a class="map" href="/tutorial/map" data-action="tutorial-map"><span class="map__text">Eğitim haritası</span></a></div></div><div class="tablet-menu__line"><div class="tablet-menu__content"><div class="theme-changer theme-changer_tablet-menu theme-changer_has-label"><label class="theme-changer__label" for="theme-changer-input-tablet" data-tooltip="Change theme"><input class="theme-changer__input" type="checkbox" id="theme-changer-input-tablet" data-theme-changer="data-theme-changer"/><span class="theme-changer__icon theme-changer__icon_light-theme"></span><span class="theme-changer__icon theme-changer__icon_dark-theme"></span><span class="theme-changer__label-text theme-changer__label-text_light-theme">Light theme</span><span class="theme-changer__label-text theme-changer__label-text_dark-theme">Dark theme</span></label></div></div></div><div class="tablet-menu__line"><div class="tablet-menu__content"><div class="share-icons"><span class="share-icons__title">Paylaş</span><a class="share share_tw" href="https://twitter.com/share?url=https%3A%2F%2Ftr.javascript.info%2Fregexp-unicode" rel="nofollow"></a><a class="share share_fb" href="https://www.facebook.com/sharer/sharer.php?s=100&p%5Burl%5D=https%3A%2F%2Ftr.javascript.info%2Fregexp-unicode" rel="nofollow"></a></div></div></div><div class="tablet-menu__line"><div class="tablet-menu__content"><select class="tablet-menu__nav input-select input-select input-select_small" onchange="if(this.value) window.location.href=this.value"><option value="https://ar.javascript.info/">عربي</option><option value="https://javascript.info/regexp-unicode">English</option><option value="https://es.javascript.info/regexp-unicode">Español</option><option value="https://fa.javascript.info/regexp-unicode">فارسی</option><option value="https://fr.javascript.info/regexp-unicode">Français</option><option value="https://id.javascript.info/">Indonesia</option><option value="https://it.javascript.info/regexp-unicode">Italiano</option><option value="https://ja.javascript.info/regexp-unicode">日本語</option><option value="https://ko.javascript.info/regexp-unicode">한국어</option><option value="https://learn.javascript.ru/regexp-unicode">Русский</option><option value="https://tr.javascript.info/" selected>Türkçe</option><option value="https://uk.javascript.info/regexp-unicode">Українська</option><option value="https://zh.javascript.info/regexp-unicode">简体中文</option></select></div></div></div><progress class="tutorial-progress" data-sticky value="3" max="17" data-tooltip="17'in 3'i dersi"></progress></div><div class="page page_sidebar_on page_inner_padding"><script>if(localStorage.noSidebar){document.querySelector(".page").classList.remove("page_sidebar_on");let e=document.querySelector(".page-wrapper");e&&e.classList.remove("page-wrapper_sidebar_on")}setTimeout(function(){document.querySelector(".page").classList.add("page_sidebar-animation-on")});</script><div class="page__inner"><main class="main main_width-limit"><header class="main__header"><div class="main__header-inner"><div class="main__header-group"><ol class="breadcrumbs"><li class="breadcrumbs__item breadcrumbs__item_home"><a class="breadcrumbs__link" href="/"><span class="breadcrumbs__hidden-text">Eğitim</span></a></li><li class="breadcrumbs__item" id="breadcrumb-1"><a class="breadcrumbs__link" href="/regular-expressions"><span>Düzenli İfadeler</span></a></li><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Eğitim","item":"https://tr.javascript.info/"},{"@type":"ListItem","position":2,"name":"Düzenli İfadeler","item":"https://tr.javascript.info/regular-expressions"}]}</script></ol><div class="updated-at" data-tooltip="Son güncelleme 2 Şubat 2020"><div class="updated-at__content">2 Şubat 2020</div></div></div><div class="notification notification_message notification_warning notification_article"><div class="notification__content">Bu materyal sadece <a href="https://javascript.info/regexp-unicode">English</a>, <a href="https://es.javascript.info/regexp-unicode">Español</a>, <a href="https://fa.javascript.info/regexp-unicode">فارسی</a>, <a href="https://fr.javascript.info/regexp-unicode">Français</a>, <a href="https://it.javascript.info/regexp-unicode">Italiano</a>, <a href="https://ja.javascript.info/regexp-unicode">日本語</a>, <a href="https://ko.javascript.info/regexp-unicode">한국어</a>, <a href="https://learn.javascript.ru/regexp-unicode">Русский</a>, <a href="https://uk.javascript.info/regexp-unicode">Українська</a>, <a href="https://zh.javascript.info/regexp-unicode">简体中文</a> dillerinde mevcuttur. Lütfen <strong>Türkçe</strong> diline çevirmek için bize <a href="https://github.com/javascript-tutorial/tr.javascript.info/blob/master/9-regular-expressions/03-regexp-unicode">yardım edin</a>.</div></div><h1 class="main__header-title">Unicode: flag "u" and class \p{...}</h1></div></header><div class="content"><article class="formatted" itemscope itemtype="http://schema.org/TechArticle"><meta itemprop="name" content="Unicode: flag "u" and class \p{...}"><div itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="email" content="iliakan@gmail.com"><meta itemprop="name" content="Ilya Kantor"></div><div itemprop="articleBody"><p>JavaScript uses <a href="https://en.wikipedia.org/wiki/Unicode">Unicode encoding</a> for strings. Most characters are encoding with 2 bytes, but that allows to represent at most 65536 characters.</p> <p>That range is not big enough to encode all possible characters, that’s why some rare characters are encoded with 4 bytes, for instance like <code>𝒳</code> (mathematical X) or <code>😄</code> (a smile), some hieroglyphs and so on.</p> <p>Here are the unicode values of some characters:</p> <table> <thead> <tr> <th>Character</th> <th>Unicode</th> <th>Bytes count in unicode</th> </tr> </thead> <tbody> <tr> <td>a</td> <td><code>0x0061</code></td> <td>2</td> </tr> <tr> <td>≈</td> <td><code>0x2248</code></td> <td>2</td> </tr> <tr> <td>𝒳</td> <td><code>0x1d4b3</code></td> <td>4</td> </tr> <tr> <td>𝒴</td> <td><code>0x1d4b4</code></td> <td>4</td> </tr> <tr> <td>😄</td> <td><code>0x1f604</code></td> <td>4</td> </tr> </tbody> </table> <p>So characters like <code>a</code> and <code>≈</code> occupy 2 bytes, while codes for <code>𝒳</code>, <code>𝒴</code> and <code>😄</code> are longer, they have 4 bytes.</p> <p>Long time ago, when JavaScript language was created, Unicode encoding was simpler: there were no 4-byte characters. So, some language features still handle them incorrectly.</p> <p>For instance, <code>length</code> thinks that here are two characters:</p> <div id="kr2ynlv4vt" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="Çalıştır" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="Korumalı alanda aç" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>alert('😄'.length); // 2 alert('𝒳'.length); // 2</code></pre> </div> </div> </div><p>…But we can see that there’s only one, right? The point is that <code>length</code> treats 4 bytes as two 2-byte characters. That’s incorrect, because they must be considered only together (so-called “surrogate pair”, you can read about them in the article <a href="/string">Karakter Dizisi - Strings</a>).</p> <p>By default, regular expressions also treat 4-byte “long characters” as a pair of 2-byte ones. And, as it happens with strings, that may lead to odd results. We’ll see that a bit later, in the article <a href="/regexp-character-sets-and-ranges">Sets and ranges [...]</a>.</p> <p>Unlike strings, regular expressions have flag <code class="pattern">u</code> that fixes such problems. With such flag, a regexp handles 4-byte characters correctly. And also Unicode property search becomes available, we’ll get to it next.</p> <h2><a class="main__anchor" name="unicode-properties-p" href="#unicode-properties-p">Unicode properties \p{…}</a></h2><div class="important important_warn"> <div class="important__header"><span class="important__type">Not supported in Firefox and Edge</span></div> <div class="important__content"><p>Despite being a part of the standard since 2018, unicode properties are not supported in Firefox (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1361876">bug</a>) and Edge (<a href="https://github.com/Microsoft/ChakraCore/issues/2969">bug</a>).</p> <p>There’s <a href="http://xregexp.com">XRegExp</a> library that provides “extended” regular expressions with cross-browser support for unicode properties.</p> </div></div> <p>Every character in Unicode has a lot of properties. They describe what “category” the character belongs to, contain miscellaneous information about it.</p> <p>For instance, if a character has <code>Letter</code> property, it means that the character belongs to an alphabet (of any language). And <code>Number</code> property means that it’s a digit: maybe Arabic or Chinese, and so on.</p> <p>We can search for characters with a property, written as <code class="pattern">\p{…}</code>. To use <code class="pattern">\p{…}</code>, a regular expression must have flag <code class="pattern">u</code>.</p> <p>For instance, <code>\p{Letter}</code> denotes a letter in any of language. We can also use <code>\p{L}</code>, as <code>L</code> is an alias of <code>Letter</code>. There are shorter aliases for almost every property.</p> <p>In the example below three kinds of letters will be found: English, Georgean and Korean.</p> <div id="pgzwuchon4" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="Çalıştır" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="Korumalı alanda aç" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>let str = "A ბ ㄱ"; alert( str.match(/\p{L}/gu) ); // A,ბ,ㄱ alert( str.match(/\p{L}/g) ); // null (no matches, as there's no flag "u")</code></pre> </div> </div> </div><p>Here’s the main character categories and their subcategories:</p> <ul> <li>Letter <code>L</code>: <ul> <li>lowercase <code>Ll</code></li> <li>modifier <code>Lm</code>,</li> <li>titlecase <code>Lt</code>,</li> <li>uppercase <code>Lu</code>,</li> <li>other <code>Lo</code>.</li> </ul> </li> <li>Number <code>N</code>: <ul> <li>decimal digit <code>Nd</code>,</li> <li>letter number <code>Nl</code>,</li> <li>other <code>No</code>.</li> </ul> </li> <li>Punctuation <code>P</code>: <ul> <li>connector <code>Pc</code>,</li> <li>dash <code>Pd</code>,</li> <li>initial quote <code>Pi</code>,</li> <li>final quote <code>Pf</code>,</li> <li>open <code>Ps</code>,</li> <li>close <code>Pe</code>,</li> <li>other <code>Po</code>.</li> </ul> </li> <li>Mark <code>M</code> (accents etc): <ul> <li>spacing combining <code>Mc</code>,</li> <li>enclosing <code>Me</code>,</li> <li>non-spacing <code>Mn</code>.</li> </ul> </li> <li>Symbol <code>S</code>: <ul> <li>currency <code>Sc</code>,</li> <li>modifier <code>Sk</code>,</li> <li>math <code>Sm</code>,</li> <li>other <code>So</code>.</li> </ul> </li> <li>Separator <code>Z</code>: <ul> <li>line <code>Zl</code>,</li> <li>paragraph <code>Zp</code>,</li> <li>space <code>Zs</code>.</li> </ul> </li> <li>Other <code>C</code>: <ul> <li>control <code>Cc</code>,</li> <li>format <code>Cf</code>,</li> <li>not assigned <code>Cn</code>, – private use <code>Co</code>,</li> <li>surrogate <code>Cs</code>.</li> </ul> </li> </ul> <p>So, e.g. if we need letters in lower case, we can write <code class="pattern">\p{Ll}</code>, punctuation signs: <code class="pattern">\p{P}</code> and so on.</p> <p>There are also other derived categories, like:</p> <ul> <li><code>Alphabetic</code> (<code>Alpha</code>), includes Letters <code>L</code>, plus letter numbers <code>Nl</code> (e.g. Ⅻ – a character for the roman number 12), plus some other symbols <code>Other_Alphabetic</code> (<code>OAlpha</code>).</li> <li><code>Hex_Digit</code> includes hexadecimal digits: <code>0-9</code>, <code>a-f</code>.</li> <li>…And so on.</li> </ul> <p>Unicode supports many different properties, their full list would require a lot of space, so here are the references:</p> <ul> <li>List all properties by a character: <a href="https://unicode.org/cldr/utility/character.jsp">https://unicode.org/cldr/utility/character.jsp</a>.</li> <li>List all characters by a property: <a href="https://unicode.org/cldr/utility/list-unicodeset.jsp">https://unicode.org/cldr/utility/list-unicodeset.jsp</a>.</li> <li>Short aliases for properties: <a href="https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt">https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt</a>.</li> <li>A full base of Unicode characters in text format, with all properties, is here: <a href="https://www.unicode.org/Public/UCD/latest/ucd/">https://www.unicode.org/Public/UCD/latest/ucd/</a>.</li> </ul> <h3><a class="main__anchor" name="example-hexadecimal-numbers" href="#example-hexadecimal-numbers">Example: hexadecimal numbers</a></h3><p>For instance, let’s look for hexadecimal numbers, written as <code>xFF</code>, where <code>F</code> is a hex digit (0…1 or A…F).</p> <p>A hex digit can be denoted as <code class="pattern">\p{Hex_Digit}</code>:</p> <div id="87ls47cw0m" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="Çalıştır" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="Korumalı alanda aç" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>let regexp = /x\p{Hex_Digit}\p{Hex_Digit}/u; alert("number: xAF".match(regexp)); // xAF</code></pre> </div> </div> </div><h3><a class="main__anchor" name="example-chinese-hieroglyphs" href="#example-chinese-hieroglyphs">Example: Chinese hieroglyphs</a></h3><p>Let’s look for Chinese hieroglyphs.</p> <p>There’s a unicode property <code>Script</code> (a writing system), that may have a value: <code>Cyrillic</code>, <code>Greek</code>, <code>Arabic</code>, <code>Han</code> (Chinese) and so on, <a href="/article/regexp-unicode/%22https://en.wikipedia.org/wiki/Script_(Unicode)%22">here’s the full list</a>.</p> <p>To look for characters in a given writing system we should use <code class="pattern">Script=<value></code>, e.g. for Cyrillic letters: <code class="pattern">\p{sc=Cyrillic}</code>, for Chinese hieroglyphs: <code class="pattern">\p{sc=Han}</code>, and so on:</p> <div id="6v1lglxdnm" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="Çalıştır" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="Korumalı alanda aç" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>let regexp = /\p{sc=Han}/gu; // returns Chinese hieroglyphs let str = `Hello Привет 你好 123_456`; alert( str.match(regexp) ); // 你,好</code></pre> </div> </div> </div><h3><a class="main__anchor" name="example-currency" href="#example-currency">Example: currency</a></h3><p>Characters that denote a currency, such as <code>$</code>, <code>€</code>, <code>¥</code>, have unicode property <code class="pattern">\p{Currency_Symbol}</code>, the short alias: <code class="pattern">\p{Sc}</code>.</p> <p>Let’s use it to look for prices in the format “currency, followed by a digit”:</p> <div id="orkyi6633y" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="Çalıştır" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="Korumalı alanda aç" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>let regexp = /\p{Sc}\d/gu; let str = `Prices: $2, €1, ¥9`; alert( str.match(regexp) ); // $2,€1,¥9</code></pre> </div> </div> </div><p>Later, in the article <a href="/regexp-quantifiers">Nicelik Belirteçleri +, *, ? and {n}</a> we’ll see how to look for numbers that contain many digits.</p> <h2><a class="main__anchor" name="summary" href="#summary">Summary</a></h2><p>Flag <code class="pattern">u</code> enables the support of Unicode in regular expressions.</p> <p>That means two things:</p> <ol> <li>Characters of 4 bytes are handled correctly: as a single character, not two 2-byte characters.</li> <li>Unicode properties can be used in the search: <code>\p{…}</code>.</li> </ol> <p>With Unicode properties we can look for words in given languages, special characters (quotes, currencies) and so on.</p> </div></article></div><div class="page__nav-wrap"><a class="page__nav page__nav_prev" href="/regexp-character-classes" data-tooltip="Karakter Sınıfları"><span class="page__nav-text"><span class="page__nav-text-shortcut"></span></span><span class="page__nav-text-alternate">Önceki ders</span></a><a class="page__nav page__nav_next" href="/regexp-anchors" data-tooltip="Çapalar: karakter dizisi (string) başlangıç ^ ve bitiş $"><span class="page__nav-text"><span class="page__nav-text-shortcut"></span></span><span class="page__nav-text-alternate">Bir sonraki ders</span></a></div><div class="article-tablet-foot tablet-only"><div class="article-tablet-foot__layout"><div class="share-icons"><span class="share-icons__title">Paylaş</span><a class="share share_tw" href="https://twitter.com/share?url=https%3A%2F%2Ftr.javascript.info%2Fregexp-unicode" rel="nofollow"></a><a class="share share_fb" href="https://www.facebook.com/sharer/sharer.php?s=100&p%5Burl%5D=https%3A%2F%2Ftr.javascript.info%2Fregexp-unicode" rel="nofollow"></a></div><div class="article-tablet-foot__map"><a class="map" href="/tutorial/map" data-action="tutorial-map"><span class="map__text">Eğitim haritası</span></a></div></div></div><div class="comments formatted" id="comments"><div class="comments__header"><h2 class="comments__header-title"><a href="#comments" name="comments">Yorumlar</a></h2><div class="comments__read-before"><span class="comments__read-before-link">yorum yapmadan önce lütfen okuyun...</span><div class="comments__read-before-popup"><div class="comments__read-before-popup-i"><ul><li>Eğer geliştirme ile alakalı bir öneriniz var ise yorum yerine <a href="https://github.com/javascript-tutorial/en.javascript.info/issues/new">github konusu gönderiniz</a>.</li><li>Eğer makalede bir yeri anlamadıysanız lütfen belirtiniz.</li><li>Koda birkaç satır eklemek için <code><code></code> kullanınız, birkaç satır eklemek için ise <code><pre></code> kullanın. Eğer 10 satırdan fazla kod ekleyecekseniz <a href='https://plnkr.co/edit/?p=preview'>plnkr</a> kullanabilirsiniz)</li></ul></div></div></div></div><div id="disqus_thread"></div><script>var disqus_config = function() { if (!this.page) this.page = {}; Object.assign(this.page, {"url":"https:\/\/tr.javascript.info\/regexp-unicode","identifier":"\/regexp-unicode"}); };</script><script>var disqus_shortname = "tr-javascript-info";</script><script>var disqus_enabled = true;</script></div></script></main></div><div class="sidebar page__sidebar sidebar sidebar_sticky-footer"><button class="sidebar__toggle" data-sidebar-toggle></button><a class="map" href="/tutorial/map" data-action="tutorial-map" data-tooltip="Eğitim haritası"></a><div class="sidebar__inner"><div class="sidebar__content"><div class="sidebar__section"><h4 class="sidebar__section-title">Bölüm</h4><nav class="sidebar__navigation"><ul class="sidebar__navigation-links"><li class="sidebar__navigation-link"><a class="sidebar__link" href="/regular-expressions">Düzenli İfadeler</a></li></ul></nav></div><div class="sidebar__section"><h4 class="sidebar__section-title">Ders menüsü</h4><nav class="sidebar__navigation"><ul class="sidebar__navigation-links"><li class="sidebar__navigation-link"><a class="sidebar__link" href="#unicode-properties-p">Unicode properties \p{…}</a></li><li class="sidebar__navigation-link"><a class="sidebar__link" href="#summary">Summary</a></li></ul></nav></div><div class="sidebar__section"><nav class="sidebar__navigation"><ul class="sidebar__navigation-links"><li class="sidebar__navigation-link"><a class="sidebar__link" href="#comments">Yorumlar</a></li></ul></nav></div><div class="sidebar__section"><div class="sidebar__section-title">Paylaş</div><a class="share share_tw sidebar__share" href="https://twitter.com/share?url=https%3A%2F%2Ftr.javascript.info%2Fregexp-unicode" rel="nofollow"></a><a class="share share_fb sidebar__share" href="https://www.facebook.com/sharer/sharer.php?s=100&p[url]=https%3A%2F%2Ftr.javascript.info%2Fregexp-unicode" rel="nofollow"></a></div><div class="sidebar__section"><a class="sidebar__link" href="https://github.com/javascript-tutorial/tr.javascript.info/blob/master/9-regular-expressions/03-regexp-unicode" rel="nofollow">GitHub'da düzenle</a></div></div></div></div></div></div><div class="page-footer"><ul class="page-footer__list"><li class="page-footer__item page-footer__item_copy">© 2007—2025 Ilya Kantor</li><li class="page-footer__item page-footer__item_about"><a class="page-footer__link" href="/about">proje hakkında</a></li><li class="page-footer__item page-footer__item_contact"><a class="page-footer__link" href="/about#contact-us">iletişime geçin</a></li></ul></div></body></html>