Skip to content

Commit 3889056

Browse files
committed
renovations
1 parent c6803fa commit 3889056

File tree

22 files changed

+267
-10
lines changed

22 files changed

+267
-10
lines changed

1-js/6-objects-more/3-constructor-new/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ function User(firstName, lastName) {
169169
}
170170

171171
var vasya = new User("Вася", "Петров");
172-
vasya.sayHi(); // Вася Петров
172+
vasya.sayHi(); // Привет, Вася Петров
173173
```
174174

175175
Мы уже говорили об этом подходе ранее, в главе [](/closures-usage).
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
Ответ: <code class="pattern">\d\d:\d\d</code>.
3+
4+
```js
5+
//+ run
6+
alert( "Завтрак в 09:00.".match( /\d\d:\d\d/ ) ); // 09:00
7+
```
8+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Найдите время
2+
3+
Время имеет формат `часы:минуты`. И часы и минуты состоят из двух цифр, например: `09:00`.
4+
5+
Напишите регулярное выражение для поиска времени в строке: <code class="subject">Завтрак в 09:00.</code>
6+
7+
P.S. В этой задаче выражению позволительно найти и некорректное время, например `25:99`.
8+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Ответы: **нет, да**.
2+
3+
<ul>
4+
<li>В строке <code class="subject">Java</code> он ничего не найдёт, так как исключающие квадратные скобки в `Java[^...]` означают "один символ, кроме указанных". А после <code>"Java"</code> -- конец строки, символов больше нет.
5+
6+
```js
7+
//+ run
8+
alert( "Java".match(/Java[^script]/) ); // нет совпадений
9+
```
10+
</li>
11+
<li>Да, найдёт. Поскольку регэксп регистрозависим, то под `[^script]` вполне подходит символ `"S"`.
12+
13+
```js
14+
//+ run
15+
alert( "JavaScript".match(/Java[^script]/) ); // "JavaS"
16+
```
17+
</li>
18+
</ul>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Java[^script]
2+
3+
Найдет ли регэксп <code class="pattern">/Java[^script]/</code> что-нибудь в строке <code class="subject">Java</code>?
4+
5+
А в строке <code class="subject">JavaScript</code>?
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Ответ: <code class="pattern">\d\d[-:]\d\d</code>.
2+
3+
```js
4+
//+ run
5+
var re = /\d\d[-:]\d\d/g;
6+
alert( "Завтрак в 09:00. Обед - в 21-30".match(re) );
7+
```
8+
9+
Обратим внимание, что дефис <code class="pattern">'-'</code> не экранирован, поскольку в начале скобок он не может иметь специального смысла.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Найдите время
2+
3+
Время может быть в формате `часы:минуты` или `часы-минуты`. И часы и минуты состоят из двух цифр, например `09:00`, `21-30`.
4+
5+
Напишите регулярное выражение для поиска времени:
6+
7+
```js
8+
var re = /ваше выражение/;
9+
alert( "Завтрак в 09:00. Обед - в 21-30".match(re) ); // 09:00, 21-30
10+
```
11+
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
Символ `.` является специальным, значит его надо экранировать.
2-
Регулярное выражение:
1+
2+
Решение:
33

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

10+
Заметим, что символ `.` является специальным, значит его надо экранировать, то есть вставлять как `\.`.
11+

10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
Напишите регулярное выражения для поиска многоточий: трёх или более точек подряд.
66

7-
87
Проверьте его:
98

109
```js
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Итак, нужно написать выражение для описания цвета, который начинается с "#", за которым следуют 6 шестнадцатеричных символов.
2+
3+
Шестнадцатеричный символ можно описать с помощью <code class="pattern">[0-9a-fA-F]</code>. Мы можем сократить выражение, используя не чувствительный к регистру шаблон <code class="pattern">[0-9a-f]</code>.
4+
5+
Для его шестикратного повторения мы будем использовать квантификатор <code class="pattern">{6}</code>.
6+
7+
В итоге, получаем выражение вида <code class="pattern">/#[a-f0-9]{6}/gi</code>.
8+
9+
```js
10+
//+ run
11+
var re = /#[a-f0-9]{6}/gi;
12+
13+
var str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2";
14+
15+
alert( str.match(re) ); // #121212,#AA00ef
16+
```
17+
18+
Проблема этого выражения в том, что оно находит цвет и в более длинных последовательностях:
19+
20+
```js
21+
//+ run
22+
alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #12345678
23+
```
24+
25+
Если это является проблемой, то ее можно решить чуть более сложным выражением.

0 commit comments

Comments
 (0)