diff --git a/1-js/5-functions-closures/6-memory-management/article.md b/1-js/5-functions-closures/6-memory-management/article.md index 31a1c65c..91293adb 100644 --- a/1-js/5-functions-closures/6-memory-management/article.md +++ b/1-js/5-functions-closures/6-memory-management/article.md @@ -108,7 +108,7 @@ var family = marry({ ``` delete family.father; -delete family.wife.husband; +delete family.mother.husband; ``` Обратим внимание, удаление только одной из этих ссылок ни к чему бы не привело. Пока до объекта можно добраться из корня `window`, объект остаётся жив. diff --git a/1-js/6-objects-more/2-object-conversion/article.md b/1-js/6-objects-more/2-object-conversion/article.md index 9e52cbdd..c45f2d2d 100644 --- a/1-js/6-objects-more/2-object-conversion/article.md +++ b/1-js/6-objects-more/2-object-conversion/article.md @@ -129,8 +129,9 @@ alert( +new Date() ); // valueOf: кол-во миллисекунд, проше ## Две стадии преобразования -Итак, объект преобразован в примитив при помощи `toString` или `valueOf`. Далее, вполне возможно, -Если необходимо, что полученный из объекта примитив будет преобразован дальше, уже по правилам для примитивов. +Итак, объект преобразован в примитив при помощи `toString` или `valueOf`. + +Но на этом преобразования не обязательно заканчиваются. Вполне возможно, что в процессе вычислений этот примитив будет преобразован во что-то другое. Например, рассмотрим применение к объекту операции `==`: @@ -177,22 +178,28 @@ var b = { } }; +alert( a + b ); // "12" alert( a - b ); // "1" - "2" = -1 ``` [warn header="Исключение: `Date`"] Объект `Date`, по историческим причинам, является исключением. -Бинарный оператор плюс `+` обычно использует числовое преобразование, но в случае с `Date` -- строковое: +Бинарный оператор плюс `+` обычно использует числовое преобразование и метод `valueOf`. Как мы уже знаем, если подходящего `valueOf` нет (а его нет у большинства объектов), то используется `toString`, так что в итоге преобразование происходит к строке. Но если есть `valueOf`, то используется `valueOf`. Выше в примере как раз `a + b` это демонстрируют. + +У объектов `Date` есть и `valueOf` и `toString`. Но оператор `+` для `Date` использует именно `toString` (хотя должен бы `valueOf`). + +Это и есть исключение: ```js //+ run -// бинарный вариант, строчное преобразование +// бинарный плюс, строчное преобразование alert( new Date + "" ); // "строка даты" -// унарный вариант, как и - * /, приводит к числу +// унарный плюс, как и - * /, приводит к числу alert( +new Date ); // число миллисекунд ``` +Других подобных исключений нет. [/warn] [warn header="Как испугать Java-разработчика"] diff --git a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/task.md b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/task.md index bc7933a0..31258cb7 100644 --- a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/task.md +++ b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/task.md @@ -2,7 +2,7 @@ [importance 5] -Напишите *функцию-конструктор* `Calculator`, которая создает объект с двумя методами: +Напишите *функцию-конструктор* `Calculator`, которая создает объект с тремя методами:
\[(b|url|quote)\]
.
+
+Для того, чтобы найти всё до закрывающего -- используем ленивый поиск [\s\S]*?
и обратную ссылку на открывающий тег.
+
+Итого, получится: \[(b|url|quote)\][\s\S]*?\[/\1\]
.
+
+В действии:
+
+```js
+//+ run
+var re = /\[(b|url|quote)\][\s\S]*?\[\/\1\]/g;
+
+var str1 = "..[url]http://ya.ru[/url]..";
+var str2 = "..[url][b]http://ya.ru[/b][/url]..";
+
+alert( str1.match(re) ); // [url]http://ya.ru[/url]
+alert( str2.match(re) ); // [url][b]http://ya.ru[/b][/url]
+```
+
+Для закрывающего тега `[/1]` понадобилось дополнительно экранировать слеш: `\[\/1\]`.
diff --git a/11-regular-expressions-javascript/10-regexp-backreferences/1-find-matching-bbtags/task.md b/11-regular-expressions-javascript/10-regexp-backreferences/1-find-matching-bbtags/task.md
new file mode 100644
index 00000000..8596bed5
--- /dev/null
+++ b/11-regular-expressions-javascript/10-regexp-backreferences/1-find-matching-bbtags/task.md
@@ -0,0 +1,41 @@
+# Найдите пары тегов
+
+ББ-тег имеет вид `[имя]...[/имя]`, где имя -- слово, одно из: `b`, `url`, `quote`.
+
+Например:
+```
+[b]текст[/b]
+[url]http://ya.ru[/url]
+```
+
+ББ-теги могут быть вложенными, но сам в себя тег быть вложен не может, например:
+
+```
+Допустимо:
+[url] [b]http://ya.ru[/b] [/url]
+[quote] [b]текст[/b] [/quote]
+
+Нельзя:
+[b][b]текст[/b][/b]
+```
+
+Создайте регулярное выражение для поиска ББ-тегов и их содержимого.
+
+Например:
+
+```js
+var re = /* регулярка */
+
+var str = "..[url]http://ya.ru[/url]..";
+alert( str.match(re) ); // [url]http://ya.ru[/url]
+```
+
+Если теги вложены, то нужно искать самый внешний тег (при желании можно будет продолжить поиск в его содержимом):
+
+```js
+var re = /* регулярка */
+
+var str = "..[url][b]http://ya.ru[/b][/url]..";
+alert( str.match(re) ); // [url][b]http://ya.ru[/b][/url]
+```
+
diff --git a/10-regular-expressions-javascript/10-regexp-backreferences/article.md b/11-regular-expressions-javascript/10-regexp-backreferences/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/10-regexp-backreferences/article.md
rename to 11-regular-expressions-javascript/10-regexp-backreferences/article.md
diff --git a/10-regular-expressions-javascript/12-regexp-alternation/article.md b/11-regular-expressions-javascript/12-regexp-alternation/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/12-regexp-alternation/article.md
rename to 11-regular-expressions-javascript/12-regexp-alternation/article.md
diff --git a/10-regular-expressions-javascript/13-regexp-ahchors-and-multiline-mode/article.md b/11-regular-expressions-javascript/13-regexp-ahchors-and-multiline-mode/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/13-regexp-ahchors-and-multiline-mode/article.md
rename to 11-regular-expressions-javascript/13-regexp-ahchors-and-multiline-mode/article.md
diff --git a/10-regular-expressions-javascript/14-regexp-multiline-mode/article.md b/11-regular-expressions-javascript/14-regexp-multiline-mode/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/14-regexp-multiline-mode/article.md
rename to 11-regular-expressions-javascript/14-regexp-multiline-mode/article.md
diff --git a/10-regular-expressions-javascript/15-regexp-word-boundary/article.md b/11-regular-expressions-javascript/15-regexp-word-boundary/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/15-regexp-word-boundary/article.md
rename to 11-regular-expressions-javascript/15-regexp-word-boundary/article.md
diff --git a/10-regular-expressions-javascript/15-regexp-word-boundary/boundary1.png b/11-regular-expressions-javascript/15-regexp-word-boundary/boundary1.png
similarity index 100%
rename from 10-regular-expressions-javascript/15-regexp-word-boundary/boundary1.png
rename to 11-regular-expressions-javascript/15-regexp-word-boundary/boundary1.png
diff --git a/10-regular-expressions-javascript/15-regexp-word-boundary/boundary2.png b/11-regular-expressions-javascript/15-regexp-word-boundary/boundary2.png
similarity index 100%
rename from 10-regular-expressions-javascript/15-regexp-word-boundary/boundary2.png
rename to 11-regular-expressions-javascript/15-regexp-word-boundary/boundary2.png
diff --git a/10-regular-expressions-javascript/15-regexp-word-boundary/boundary3.png b/11-regular-expressions-javascript/15-regexp-word-boundary/boundary3.png
similarity index 100%
rename from 10-regular-expressions-javascript/15-regexp-word-boundary/boundary3.png
rename to 11-regular-expressions-javascript/15-regexp-word-boundary/boundary3.png
diff --git a/10-regular-expressions-javascript/15-regexp-word-boundary/boundary4.png b/11-regular-expressions-javascript/15-regexp-word-boundary/boundary4.png
similarity index 100%
rename from 10-regular-expressions-javascript/15-regexp-word-boundary/boundary4.png
rename to 11-regular-expressions-javascript/15-regexp-word-boundary/boundary4.png
diff --git a/10-regular-expressions-javascript/16-regexp-todo/article.md b/11-regular-expressions-javascript/16-regexp-todo/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/16-regexp-todo/article.md
rename to 11-regular-expressions-javascript/16-regexp-todo/article.md
diff --git a/10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/article.md b/11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/article.md
rename to 11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/article.md
diff --git a/10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy1.png b/11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy1.png
similarity index 100%
rename from 10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy1.png
rename to 11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy1.png
diff --git a/10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy11.png b/11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy11.png
similarity index 100%
rename from 10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy11.png
rename to 11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy11.png
diff --git a/10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy2.png b/11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy2.png
similarity index 100%
rename from 10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy2.png
rename to 11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy2.png
diff --git a/10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy3.png b/11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy3.png
similarity index 100%
rename from 10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy3.png
rename to 11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy3.png
diff --git a/10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy4.png b/11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy4.png
similarity index 100%
rename from 10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy4.png
rename to 11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy4.png
diff --git a/10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy5.png b/11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy5.png
similarity index 100%
rename from 10-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy5.png
rename to 11-regular-expressions-javascript/17-regexp-infinite-backtracking-problem/bad_backtrack_greedy5.png
diff --git a/10-regular-expressions-javascript/18-regexp-orphans/article.md b/11-regular-expressions-javascript/18-regexp-orphans/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/18-regexp-orphans/article.md
rename to 11-regular-expressions-javascript/18-regexp-orphans/article.md
diff --git a/10-regular-expressions-javascript/2-regexp-methods/article.md b/11-regular-expressions-javascript/2-regexp-methods/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/2-regexp-methods/article.md
rename to 11-regular-expressions-javascript/2-regexp-methods/article.md
diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/solution.md b/11-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/solution.md
rename to 11-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/solution.md
diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/task.md b/11-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/task.md
rename to 11-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/task.md
diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/article.md b/11-regular-expressions-javascript/3-regexp-character-classes/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/3-regexp-character-classes/article.md
rename to 11-regular-expressions-javascript/3-regexp-character-classes/article.md
diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/love_html5.png b/11-regular-expressions-javascript/3-regexp-character-classes/love_html5.png
similarity index 100%
rename from 10-regular-expressions-javascript/3-regexp-character-classes/love_html5.png
rename to 11-regular-expressions-javascript/3-regexp-character-classes/love_html5.png
diff --git a/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/1-find-range-1/solution.md b/11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/1-find-range-1/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/1-find-range-1/solution.md
rename to 11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/1-find-range-1/solution.md
diff --git a/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/1-find-range-1/task.md b/11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/1-find-range-1/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/1-find-range-1/task.md
rename to 11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/1-find-range-1/task.md
diff --git a/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md b/11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md
rename to 11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md
diff --git a/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md b/11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md
rename to 11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md
diff --git a/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/article.md b/11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/article.md
rename to 11-regular-expressions-javascript/5-regexp-character-sets-and-ranges/article.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/solution.md b/11-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/solution.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/solution.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md b/11-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/2-find-html-colors-6hex/solution.md b/11-regular-expressions-javascript/7-regexp-quantifiers/2-find-html-colors-6hex/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/2-find-html-colors-6hex/solution.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/2-find-html-colors-6hex/solution.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/2-find-html-colors-6hex/task.md b/11-regular-expressions-javascript/7-regexp-quantifiers/2-find-html-colors-6hex/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/2-find-html-colors-6hex/task.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/2-find-html-colors-6hex/task.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/3-find-decimal-positive-numbers/solution.md b/11-regular-expressions-javascript/7-regexp-quantifiers/3-find-decimal-positive-numbers/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/3-find-decimal-positive-numbers/solution.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/3-find-decimal-positive-numbers/solution.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/3-find-decimal-positive-numbers/task.md b/11-regular-expressions-javascript/7-regexp-quantifiers/3-find-decimal-positive-numbers/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/3-find-decimal-positive-numbers/task.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/3-find-decimal-positive-numbers/task.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/4-find-decimal-numbers/solution.md b/11-regular-expressions-javascript/7-regexp-quantifiers/4-find-decimal-numbers/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/4-find-decimal-numbers/solution.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/4-find-decimal-numbers/solution.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/4-find-decimal-numbers/task.md b/11-regular-expressions-javascript/7-regexp-quantifiers/4-find-decimal-numbers/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/4-find-decimal-numbers/task.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/4-find-decimal-numbers/task.md
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/article.md b/11-regular-expressions-javascript/7-regexp-quantifiers/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/7-regexp-quantifiers/article.md
rename to 11-regular-expressions-javascript/7-regexp-quantifiers/article.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/1-lazy-greedy/solution.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/1-lazy-greedy/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/1-lazy-greedy/solution.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/1-lazy-greedy/solution.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/1-lazy-greedy/task.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/1-lazy-greedy/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/1-lazy-greedy/task.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/1-lazy-greedy/task.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/2-difference-find-quote/solution.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/2-difference-find-quote/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/2-difference-find-quote/solution.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/2-difference-find-quote/solution.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/2-difference-find-quote/task.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/2-difference-find-quote/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/2-difference-find-quote/task.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/2-difference-find-quote/task.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/solution.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/solution.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/solution.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/task.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/task.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/task.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/article.md b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/article.md
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/article.md
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/article.md
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy1.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy1.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy1.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy1.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy2.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy2.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy2.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy2.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy3.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy3.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy3.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy3.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy4.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy4.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy4.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy4.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy5.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy5.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy5.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy5.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy6.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy6.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy6.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_greedy6.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy3.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy3.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy3.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy3.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy4.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy4.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy4.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy4.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy5.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy5.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy5.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy5.svg
diff --git a/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy6.svg b/11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy6.svg
similarity index 100%
rename from 10-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy6.svg
rename to 11-regular-expressions-javascript/8-regexp-greedy-and-lazy/witch_lazy6.svg
diff --git a/11-regular-expressions-javascript/9-regexp-groups/1-find-webcolor-3-or-6/solution.md b/11-regular-expressions-javascript/9-regexp-groups/1-find-webcolor-3-or-6/solution.md
new file mode 100644
index 00000000..78bea60d
--- /dev/null
+++ b/11-regular-expressions-javascript/9-regexp-groups/1-find-webcolor-3-or-6/solution.md
@@ -0,0 +1,21 @@
+Регулярное выражение для поиска 3-значного цвета: /#[a-f0-9]{3}/i
.
+
+Нужно добавить ещё три символа, причём нужны именно три, четыре или семь символов не нужны. Эти три символа либо есть, либо нет.
+
+Самый простой способ добавить -- просто дописать в конец регэкспа: /#[a-f0-9]{3}([a-f0-9]{3})?/i
+
+Можно поступить и хитрее: /#([a-f0-9]{3}){1,2}/i
.
+
+Здесь регэксп [a-f0-9]{3}
заключён в скобки, чтобы квантификатор {1,2}
применялся целиком ко всей этой структуре.
+
+В действии:
+```js
+//+ run
+var re = /#([a-f0-9]{3}){1,2}/gi;
+
+var str = "color: #3f3; background-color: #AA00ef; and: #abcd";
+
+alert( str.match(re) ); // #3f3 #AA0ef #abc
+```
+
+
diff --git a/11-regular-expressions-javascript/9-regexp-groups/1-find-webcolor-3-or-6/task.md b/11-regular-expressions-javascript/9-regexp-groups/1-find-webcolor-3-or-6/task.md
new file mode 100644
index 00000000..000555ac
--- /dev/null
+++ b/11-regular-expressions-javascript/9-regexp-groups/1-find-webcolor-3-or-6/task.md
@@ -0,0 +1,14 @@
+# Найдите цвет в формате #abc или #abcdef
+
+Напишите регулярное выражение, которое находит цвет в формате `#abc` или `#abcdef`. То есть, символ `#`, после которого идут 3 или 6 шестнадцатиричных символа.
+
+Пример использования:
+```js
+var re = /* ваш регэксп */
+
+var str = "color: #3f3; background-color: #AA00ef; and: #abcd";
+
+alert( str.match(re) ); // #3f3 #AA0ef
+```
+
+P.S. Значения из четырёх и более букв, такие как `#abcd` мы в этой задаче также учитываем, но берём из них только необходимые для совпадения символы, то есть `#abc`.
diff --git a/11-regular-expressions-javascript/9-regexp-groups/2-parse-expression/solution.md b/11-regular-expressions-javascript/9-regexp-groups/2-parse-expression/solution.md
new file mode 100644
index 00000000..05fedcd8
--- /dev/null
+++ b/11-regular-expressions-javascript/9-regexp-groups/2-parse-expression/solution.md
@@ -0,0 +1,53 @@
+Регулярное выражение для числа, возможно, дробного и отрицательного: -?\d+(\.\d+)?
. Мы уже разбирали его в предыдущих задачах.
+
+Оператор -- это [-+*/]
. Заметим, что дефис -
идёт в списке первым, так как на любой позиции, кроме первой и последней, он имеет специальный смысл внутри [...]
, и его понадобилось бы экранировать.
+
+Кроме того, когда мы оформим это в JavaScript-синтаксис /.../
-- понадобится заэкранировать слэш /
.
+
+Нам нужно число, затем оператор, затем число, и необязательные пробелы между ними.
+
+Полное регулярное выражение будет таким: -?\d+(\.\d+)?\s*[-+*/]\s*-?\d+(\.\d+)?
.
+
+Чтобы получить результат в виде массива, добавим скобки вокруг тех данных, которые нам интересны, то есть -- вокруг чисел и оператора: (-?\d+(\.\d+)?)\s*([-+*/])\s*(-?\d+(\.\d+)?)
.
+
+Посмотрим в действии:
+```js
+//+ run
+var re = /(-?\d+(\.\d+)?)\s*([-+*\/])\s*(-?\d+(\.\d+)?)/;
+
+alert( "1.2 + 12".match(re) );
+```
+
+Итоговый массив будет включать в себя компоненты:
+
+?:
, то есть: (?:\.\d+)?
.
+
+Итого, решение:
+
+```js
+//+ run
+function parse(expr) {
+ var re = /(-?\d+(?:\.\d+)?)\s*([-+*\/])\s*(-?\d+(?:\.\d+)?)/;
+
+ var result = expr.match(re);
+
+ if (!result) return;
+ result.shift();
+
+ return result;
+}
+
+alert( parse("-1.23 * 3.45") ); // -1.23, *, 3.45
+```
+
diff --git a/11-regular-expressions-javascript/9-regexp-groups/2-parse-expression/task.md b/11-regular-expressions-javascript/9-regexp-groups/2-parse-expression/task.md
new file mode 100644
index 00000000..353ae5f4
--- /dev/null
+++ b/11-regular-expressions-javascript/9-regexp-groups/2-parse-expression/task.md
@@ -0,0 +1,20 @@
+# Разобрать выражение
+
+Арифметическое выражение состоит из двух чисел и операции между ними, например:
+