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

Экранирование свойств Юникода

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

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

\p{L} = «любая буква (Юникод)»: включает буквы с диакритическими знаками, китайский язык. идеограммы, кириллица, греческий язык\все. Наиболее распространенные из них:

  • \p{L} -- буква (любого алфавита).
  • \p{N} -- номер (арабские цифры, римские, индийские).
  • \p{P} -- знаки препинания.
  • \p{S} -- символ (математический, валютный, эмодзи).
  • \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Загрузка…

Найдите в тексте все символы Юникода (валюты, математические символы, смайлики), за исключением букв и цифр.

Загрузка редактора…
Показать подсказку

\\p{S} соответствует категории символов Юникода. Помните флаг u.

Решение доступно после 3 попыток

Дополнительная задача

Упражнение#regex.m5.l4.e3
Попыток: 0Загрузка…

Найдите все слова, состоящие из букв кириллицы, используя `\p{Script=Cyrillic}`.

Загрузка редактора…
Показать подсказку

Используйте \\p{Script=Cyrillic} с квантором + и флагом u.

Решение доступно после 3 попыток