Модульні уроки (4/4)
Екранування властивості Unicode
Класів \w, \d, \s в ASCII недостатньо для італійської, французької, грецької
або текст емодзі. Сучасний JavaScript (з прапором u -- Unicode) пропонує
екранування властивостей \p{...}: семантичні класи на основі Unicode
властивості персонажів.
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
\\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 спроб
Повторна вправа
Знайдіть усі символи Unicode (валюти, математика, емодзі) у тексті, за винятком літер і цифр.
Показати підказку
\\p{S} відповідає категорії символів Unicode. Запам'ятайте прапор u.
Рішення доступне після 3 спроб
Додатковий виклик
Знайдіть усі слова, що складаються з букв кирилиці, використовуючи `\p{Script=Cyrillic}`.
Показати підказку
Використовуйте \\p{Script=Cyrillic} із квантором + і прапорцем u.
Рішення доступне після 3 спроб