Skip to content

Commit 8525ff9

Browse files
authored
Небольшие правки в соответствии с англ. версией
Небольшие правки в соответствии с англ. версией учебника. Статья: "Юникод: флаг "u" и класс \p{...}"
1 parent ec13f0e commit 8525ff9

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

9-regular-expressions/03-regexp-unicode/article.md

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,21 @@ alert('𝒳'.length); // 2
3333

3434
## Юникодные свойства \p{...}
3535

36-
```warn header="Не поддерживается в некоторых старых браузерах"
37-
Несмотря на то, что это часть стандарта с 2018 года, Юникодные свойства не поддерживаются в Firefox до 78 версии и в Edge до 79 версии.
38-
39-
Существует библиотека [XRegExp](https://xregexp.com), которая реализует "расширенные" регулярные выражения с кросс-браузерной поддержкой Юникодных свойств.
40-
```
41-
4236
Каждому символу в кодировке Юникод соответствует множество свойств. Они описывают к какой "категории" относится символ, содержат различную информацию о нём.
4337

44-
Например, свойство `Letter` у символа означает, что это буква какого-то алфавита, причём любого. А свойство `Number` означает, что это цифра - арабская или китайская, и т.п, на каком-то из языков.
38+
Например, свойство `Letter` у символа означает, что это буква какого-то алфавита, причём любого. А свойство `Number` означает, что это цифра: возможно, арабская или китайская, и т.д.
4539

4640
В регулярном выражении можно искать символ с заданным свойством, указав его в `pattern:\p{…}`. Для таких регулярных выражений обязательно использовать флаг `pattern:u`.
4741

48-
Например, `pattern:\p{Letter}` обозначает букву в любом языке. Также можно использовать запись `pattern:\p{L}`, так как `L` - это псевдоним `Letter`. Существуют короткие записи почти для всех свойств.
42+
Например, `\p{Letter}` обозначает букву в любом языке. Также можно использовать запись `\p{L}`, так как `L` - это псевдоним `Letter`. Существуют короткие записи почти для всех свойств.
4943

5044
В примере ниже будут найдены английская, грузинская и корейская буквы:
5145

5246
```js run
5347
let str = "A ბ ㄱ";
5448

5549
alert( str.match(/\p{L}/gu) ); // A,ბ,ㄱ
56-
alert( str.match(/\p{L}/g) ); // null (ничего не нашло, так как нет флага "u")
50+
alert( str.match(/\p{L}/g) ); // null (ничего не нашло, так как \p не работает без флага "u")
5751
```
5852

5953
Вот основные категории символов и их подкатегории:
@@ -81,7 +75,10 @@ alert( str.match(/\p{L}/g) ); // null (ничего не нашло, так ка
8175
- вложения `Me`,
8276
- апострофы `Mn`.
8377
- Символы `S`:
84-
- валюты `Sc`, модификаторы `Sk`, математические `Sm`, прочие `So`.
78+
- валюты `Sc`,
79+
- модификаторы `Sk`,
80+
- математические `Sm`,
81+
- прочие `So`.
8582
- Разделители `Z`:
8683
- линия `Zl`,
8784
- параграф `Zp`,
@@ -109,7 +106,7 @@ alert( str.match(/\p{L}/g) ); // null (ничего не нашло, так ка
109106

110107
### Пример: шестнадцатеричные числа
111108

112-
Например, давайте поищем шестнадцатеричные числа, записанные в формате `xFF`, где вместо `F` может быть любая шестнадцатеричная цифра (0..1 или A..F).
109+
Например, давайте поищем шестнадцатеричные числа, записанные в формате `xFF`, где вместо `F` может быть любая шестнадцатеричная цифра (0..9 или A..F).
113110

114111
Шестнадцатеричная цифра может быть обозначена как `pattern:\p{Hex_Digit}`:
115112

@@ -137,7 +134,7 @@ alert( str.match(regexp) ); // 你,好
137134

138135
### Пример: валюта
139136

140-
Символы, обозначающие валюты, такие как `$`, ``, `¥` и другие, имеют свойство `pattern:\p{Currency_Symbol}`, короткая запись `pattern:\p{Sc}`.
137+
Символы, обозначающие валюты, такие как `$`, ``, `¥`, имеют свойство `pattern:\p{Currency_Symbol}`, короткая запись: `pattern:\p{Sc}`.
141138

142139
Используем его, чтобы поискать цены в формате "валюта, за которой идёт цифра":
143140

@@ -158,6 +155,6 @@ alert( str.match(regexp) ); // $2,€1,¥9
158155
Конкретно, это означает, что:
159156

160157
1. Символы из 4 байт воспринимаются как единое целое, а не как два символа по 2 байта.
161-
2. Работает поиск по Юникодным свойствам `pattern:\p{…}`.
158+
2. Работает поиск по Юникодным свойствам `\p{…}`.
162159

163160
С помощью Юникодных свойств мы можем искать слова на нужных языках, специальные символы (кавычки, обозначения валюты) и так далее.

0 commit comments

Comments
 (0)