You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 9-regular-expressions/03-regexp-unicode/article.md
+10-13Lines changed: 10 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,27 +33,21 @@ alert('𝒳'.length); // 2
33
33
34
34
## Юникодные свойства \p{...}
35
35
36
-
```warn header="Не поддерживается в некоторых старых браузерах"
37
-
Несмотря на то, что это часть стандарта с 2018 года, Юникодные свойства не поддерживаются в Firefox до 78 версии и в Edge до 79 версии.
38
-
39
-
Существует библиотека [XRegExp](https://xregexp.com), которая реализует "расширенные" регулярные выражения с кросс-браузерной поддержкой Юникодных свойств.
40
-
```
41
-
42
36
Каждому символу в кодировке Юникод соответствует множество свойств. Они описывают к какой "категории" относится символ, содержат различную информацию о нём.
43
37
44
-
Например, свойство `Letter` у символа означает, что это буква какого-то алфавита, причём любого. А свойство `Number` означает, что это цифра - арабская или китайская, и т.п, на каком-то из языков.
38
+
Например, свойство `Letter` у символа означает, что это буква какого-то алфавита, причём любого. А свойство `Number` означает, что это цифра: возможно, арабская или китайская, и т.д.
45
39
46
40
В регулярном выражении можно искать символ с заданным свойством, указав его в `pattern:\p{…}`. Для таких регулярных выражений обязательно использовать флаг `pattern:u`.
47
41
48
-
Например, `pattern:\p{Letter}` обозначает букву в любом языке. Также можно использовать запись `pattern:\p{L}`, так как `L` - это псевдоним `Letter`. Существуют короткие записи почти для всех свойств.
42
+
Например, `\p{Letter}` обозначает букву в любом языке. Также можно использовать запись `\p{L}`, так как `L` - это псевдоним `Letter`. Существуют короткие записи почти для всех свойств.
49
43
50
44
В примере ниже будут найдены английская, грузинская и корейская буквы:
51
45
52
46
```js run
53
47
let str ="A ბ ㄱ";
54
48
55
49
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")
57
51
```
58
52
59
53
Вот основные категории символов и их подкатегории:
@@ -81,7 +75,10 @@ alert( str.match(/\p{L}/g) ); // null (ничего не нашло, так ка
0 commit comments