Перейти до основного вмісту
Модуль 5 · Урок 4 із 420/32 у курсі~12 min
Модульні уроки (4/4)

Екранування властивості Unicode

Класів \w, \d, \s в ASCII недостатньо для італійської, французької, грецької або текст емодзі. Сучасний JavaScript (з прапором u -- Unicode) пропонує екранування властивостей \p{...}: семантичні класи на основі Unicode властивості персонажів.

Code
Pattern: \p{L}+        (with flag u)
Sample:  Ciao caffe' \u00fcber \u4e16\u754c
         ^^^^ ^^^^^^^ ^^^^ ^^^^

\p{L} = "будь-яка літера (Юнікод)": включає літери з акцентами, китайська ідеограми, кирилиця, грецьке\u2026 все. Найпоширеніші:

  • \p{L} -- літера (будь-якого алфавіту).
  • \p{N} -- номер (арабські цифри, римські, індійські\u2026).
  • \p{P} -- пунктуація.
  • \p{S} -- символ (математичний, валютний, емодзі\u2026).
  • \p{Z} -- пробіл/роздільник.
  • \p{Script=Latin} -- зокрема латинський алфавіт.
  • \p{Script=Greek} -- грецький алфавіт. І так далі.

І заперечені версії \P{L}, \P{N}, \u2026

Різниця з \w і \d

Code
\\w matches [A-Za-z0-9_]              -- ASCII only, no "caffe'"
\\p{L}\\p{N}_  with flag u            -- includes accented characters

Для надійного аналізатора італійського тексту віддавайте перевагу \p{L} над \w: citta', perche', andro' правильно збігаються як слова.

Властивості Unicode та сумісність із браузером

Такі властивості Юнікоду, як \\p{L} (літери) або \\p{Script=Latin}, розширюють класи для міжнародних алфавітів. У JavaScript вони суворо вимагають прапорця u (або v), інакше механізм видає синтаксичну помилку.

Спробуйте

вправи#regex.m5.l4.e1
Спроби: 0Завантаження…

Знайдіть кожне слово, включно з наголосами (citta', perche', e' \u2026). Використовуйте властивість escape \\p{L} із прапорцем u.

Завантаження редактора…
Показати підказку

Замініть \\w+ на \\p{L}+ і додайте прапор u (на додаток до g).

Рішення доступне після 3 спроб

Повторна вправа

вправи#regex.m5.l4.e2
Спроби: 0Завантаження…

Знайдіть усі символи Unicode (валюти, математика, емодзі) у тексті, за винятком літер і цифр.

Завантаження редактора…
Показати підказку

\\p{S} відповідає категорії символів Unicode. Запам'ятайте прапор u.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#regex.m5.l4.e3
Спроби: 0Завантаження…

Знайдіть усі слова, що складаються з букв кирилиці, використовуючи `\p{Script=Cyrillic}`.

Завантаження редактора…
Показати підказку

Використовуйте \\p{Script=Cyrillic} із квантором + і прапорцем u.

Рішення доступне після 3 спроб