Уроки модуля (4/4)
Экранирование свойств Юникода
Классов \w, \d, \s в ASCII недостаточно для итальянского, французского, греческого языков.
или текст смайлика. Современный JavaScript (с флагом u — Unicode) предлагает
экранирование свойств \p{...}: семантические классы на основе Unicode
свойства персонажей.
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
\\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), иначе движок выдаст синтаксическую ошибку.
Попробуйте это
Найдите каждое слово, в том числе с ударением (citta', perche', e' \u2026). Используйте escape-свойство \\p{L} с флагом u.
Показать подсказку
Замените \\w+ на \\p{L}+ и добавьте флаг u (в дополнение к g).
Решение доступно после 3 попыток
Обзор упражнения
Найдите в тексте все символы Юникода (валюты, математические символы, смайлики), за исключением букв и цифр.
Показать подсказку
\\p{S} соответствует категории символов Юникода. Помните флаг u.
Решение доступно после 3 попыток
Дополнительная задача
Найдите все слова, состоящие из букв кириллицы, используя `\p{Script=Cyrillic}`.
Показать подсказку
Используйте \\p{Script=Cyrillic} с квантором + и флагом u.
Решение доступно после 3 попыток