Skip to content

Commit 7915770

Browse files
committed
regexp
1 parent 02089ed commit 7915770

40 files changed

Lines changed: 192 additions & 181 deletions

File tree

9-regular-expressions/01-regexp-introduction/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ let regexp = new RegExp(`<${tag}>`); // то же, что /<h2>/ при отв
8181
```js run
8282
let str = "Любо, братцы, любо!";
8383

84-
alert( str.match(/любо/gi) ); // Любо,любо (массив из 2 совпадений)
84+
alert( str.match(/любо/gi) ); // Любо,любо (массив из 2х подстрок-совпадений)
8585
```
8686
Обратите внимание: найдены и `match:Любо` и `match:любо`, благодаря флагу `pattern:i`, который делает регулярное выражение регистро-независимым.
8787

@@ -159,9 +159,9 @@ alert( "Люблю HTML".replace(/HTML/, "$& и JavaScript") ); // Люблю HT
159159

160160
```js run
161161
let str = "Я ЛюБлЮ JavaScript";
162-
let reg = /люблю/i;
162+
let regexp = /люблю/i;
163163
164-
alert( reg.test(str) ); // true
164+
alert( regexp.test(str) ); // true
165165
```
166166

167167
Далее в этом разделе мы будем изучать регулярные выражения, увидим ещё много примеров их использования, а также познакомимся с другими методами.

9-regular-expressions/02-regexp-character-classes/article.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
```js run
1414
let str = "+7(903)-123-45-67";
1515

16-
let reg = /\d/;
16+
let regexp = /\d/;
1717

18-
alert( str.match(reg) ); // 7
18+
alert( str.match(regexp) ); // 7
1919
```
2020

2121
Без флага `pattern:g` регулярное выражение ищет только первое совпадение, то есть первую цифру `pattern:\d`.
@@ -25,12 +25,12 @@ alert( str.match(reg) ); // 7
2525
```js run
2626
let str = "+7(903)-123-45-67";
2727

28-
let reg = /\d/g;
28+
let regexp = /\d/g;
2929

30-
alert( str.match(reg) ); // массив совпадений: 7,9,0,3,1,2,3,4,5,6,7
30+
alert( str.match(regexp) ); // массив совпадений: 7,9,0,3,1,2,3,4,5,6,7
3131

3232
// и можно сделать из них уже чисто цифровой номер телефона
33-
alert( str.match(reg).join('') ); // 79035419441
33+
alert( str.match(regexp).join('') ); // 79035419441
3434
```
3535

3636
Это был символьный класс для цифр. Есть и другие символьные классы.
@@ -54,9 +54,9 @@ alert( str.match(reg).join('') ); // 79035419441
5454

5555
```js run
5656
let str = "Есть ли стандарт CSS4?";
57-
let reg = /CSS\d/
57+
let regexp = /CSS\d/
5858

59-
alert( str.match(reg) ); // CSS4
59+
alert( str.match(regexp) ); // CSS4
6060
```
6161

6262
Также мы можем использовать несколько символьных классов:
@@ -114,11 +114,11 @@ alert( "Ю".match(/./) ); // Ю
114114
Или в середине регулярного выражения:
115115

116116
```js run
117-
let reg = /CS.4/;
117+
let regexp = /CS.4/;
118118

119-
alert( "CSS4".match(reg) ); // CSS4
120-
alert( "CS-4".match(reg) ); // CS-4
121-
alert( "CS 4".match(reg) ); // CS 4 (пробел тоже является символом)
119+
alert( "CSS4".match(regexp) ); // CSS4
120+
alert( "CS-4".match(regexp) ); // CS-4
121+
alert( "CS 4".match(regexp) ); // CS 4 (пробел тоже является символом)
122122
```
123123

124124
Обратите внимание, что точка означает "любой символ", но не "отсутствие символа". Там должен быть какой-либо символ, чтобы соответствовать условию поиска:

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,9 @@ alert( str.match(/\p{L}/g) ); // null (ничего не нашло, так ка
114114
Шестнадцатеричная цифра может быть обозначена как `pattern:\p{Hex_Digit}`:
115115

116116
```js run
117-
let reg = /x\p{Hex_Digit}\p{Hex_Digit}/u;
117+
let regexp = /x\p{Hex_Digit}\p{Hex_Digit}/u;
118118

119-
alert("число: xAF".match(reg)); // xAF
119+
alert("число: xAF".match(regexp)); // xAF
120120
```
121121

122122
### Пример: китайские иероглифы

9-regular-expressions/07-regexp-escaping/article.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ alert( "/".match(new RegExp("/")) ); // находит /
5555
Например, такой поиск не работает:
5656

5757
```js run
58-
let reg = new RegExp("\d\.\d");
58+
let regexp = new RegExp("\d\.\d");
5959

60-
alert( "Глава 5.1".match(reg) ); // null
60+
alert( "Глава 5.1".match(regexp) ); // null
6161
```
6262

6363
Аналогичный поиск в примере выше с `pattern:/\d\.\d/` вполне работал, почему же не работает `new RegExp("\d\.\d")`?
@@ -86,9 +86,9 @@ let regStr = "\\d\\.\\d";
8686
*/!*
8787
alert(regStr); // \d\.\d (теперь правильно)
8888

89-
let reg = new RegExp(regStr);
89+
let regexp = new RegExp(regStr);
9090

91-
alert( "Глава 5.1".match(reg) ); // 5.1
91+
alert( "Глава 5.1".match(regexp) ); // 5.1
9292
```
9393

9494
## Итого
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
Ответ: `pattern:\d\d[-:]\d\d`.
22

33
```js run
4-
let reg = /\d\d[-:]\d\d/g;
5-
alert( "Завтрак в 09:00. Ужин в 21-30".match(reg) ); // 09:00, 21-30
4+
let regexp = /\d\d[-:]\d\d/g;
5+
alert( "Завтрак в 09:00. Ужин в 21-30".match(regexp) ); // 09:00, 21-30
66
```
77

88
Обратите внимание, что дефис `pattern:'-'` имеет специальное значение в квадратных скобках, но только между другими символами, а не в начале или в конце, поэтому нам не нужно экранировать его.

9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
Напишите регулярное выражение, чтобы найти время:
66

77
```js
8-
let reg = /your regexp/g;
9-
alert( "Завтрак в 09:00. Ужин в 21-30".match(reg) ); // 09:00, 21-30
8+
let regexp = /your regexp/g;
9+
alert( "Завтрак в 09:00. Ужин в 21-30".match(regexp) ); // 09:00, 21-30
1010
```
1111

1212
P.S. В этой задаче мы предполагаем, что время всегда правильное, нет необходимости отфильтровывать плохие строки, такие как "45:67". Позже мы разберёмся с этим.

9-regular-expressions/08-regexp-character-sets-and-ranges/article.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,18 +135,18 @@ alert( "alice15@gmail.com".match(/[^\d\sA-Z]/gi) ); // @ и .
135135

136136
```js run
137137
// Нет необходимости в экранировании
138-
let reg = /[-().^+]/g;
138+
let regexp = /[-().^+]/g;
139139

140-
alert( "1 + 2 - 3".match(reg) ); // Совпадения +, -
140+
alert( "1 + 2 - 3".match(regexp) ); // Совпадения +, -
141141
```
142142

143143
...Впрочем, если вы решите экранировать "на всякий случай", то не будет никакого вреда:
144144

145145
```js run
146146
// Экранирование всех возможных символов
147-
let reg = /[\-\(\)\.\^\+]/g;
147+
let regexp = /[\-\(\)\.\^\+]/g;
148148

149-
alert( "1 + 2 - 3".match(reg) ); // также работает: +, -
149+
alert( "1 + 2 - 3".match(regexp) ); // также работает: +, -
150150
```
151151

152152
## Наборы и флаг "u"

9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/solution.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
Решение:
33

44
```js run
5-
let reg = /\.{3,}/g;
6-
alert( "Привет!... Как дела?.....".match(reg) ); // ..., .....
5+
let regexp = /\.{3,}/g;
6+
alert( "Привет!... Как дела?.....".match(regexp) ); // ..., .....
77
```
88

99
Обратите внимание, что точка - это специальный символ. Мы должны экранировать её, то есть вставлять как `\.`.

9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ importance: 5
99
Проверьте его:
1010

1111
```js
12-
let reg = /ваше выражение/g;
13-
alert( "Привет!... Как дела?.....".match(reg) ); // ..., .....
12+
let regexp = /ваше выражение/g;
13+
alert( "Привет!... Как дела?.....".match(regexp) ); // ..., .....
1414
```

9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/solution.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
В результате наше регулярное выражение получилось таким: `pattern:/#[a-f0-9]{6}/gi`.
88

99
```js run
10-
let reg = /#[a-f0-9]{6}/gi;
10+
let regexp = /#[a-f0-9]{6}/gi;
1111

1212
let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2"
1313

14-
alert( str.match(reg) ); // #121212,#AA00ef
14+
alert( str.match(regexp) ); // #121212,#AA00ef
1515
```
1616

1717
Проблема в том, что находятся также совпадения, принадлежащие более длинным последовательностям символов:

0 commit comments

Comments
 (0)