diff --git a/11-regular-expressions-javascript/12-regexp-alternation/1-find-programming-language/solution.md b/11-regular-expressions-javascript/12-regexp-alternation/1-find-programming-language/solution.md
new file mode 100644
index 00000000..b02bec16
--- /dev/null
+++ b/11-regular-expressions-javascript/12-regexp-alternation/1-find-programming-language/solution.md
@@ -0,0 +1,36 @@
+Сначала неправильный способ.
+
+Если перечислить языки один за другим через `|`, то получится совсем не то:
+
+```js
+//+ run
+var reg = /Java|JavaScript|PHP|C|C\+\+/g;
+
+var str = "Java, JavaScript, PHP, C, C++";
+
+alert( str.match(reg) ); // Java,Java,PHP,C,C
+```
+
+Как видно, движок регулярных выражений ищет альтернации в порядке их перечисления. То есть, он сначала смотрит, есть ли Java
, а если нет -- ищет JavaScript
.
+
+Естественно, при этом JavaScript
не будет найдено никогда.
+
+То же самое -- с C
и C++
.
+
+Есть два решения проблемы:
+
+
JavaScript|Java|C\+\+|C|PHP
.Java(Script)?|C(\+\+)?|PHP
./"(\\.|[^"\\])*"/g
.
+
+То есть:
+"
\\
(удвоение слэша -- техническое, для вставки в регэксп, на самом деле там один слэш), то после него также подойдёт любой символ (точка).[^"\\]
"..."
.
+
+В строке *могут* быть любые символы, включая вложенные кавычки, заэкранированные слэшем, то есть: \"
, \n
. Слэш удваивается, чтобы вставить его как символ: \\
.
+
+Иначе говоря, синтаксис строки -- примерно соответствует используемому в JavaScript. Нужно такие строки найти.
+
+Пример совпадающих строк:
+```js
+var str = ' .. *!*"test me"*/!* .. ';
+
+var str = ' .. *!*"Скажи \\"Привет\\"!"*/!* ... ';
+
+var str = ' .. *!*"\\r\\n"*/!* .. ';
+```
+
+Слэши в этих строках удвоены по технической причине -- в JavaScript кавычки `'...'` считают слэш специальным символом и требуют его экранировать.
+
+Так что на самом деле, к примеру, в такой строке одинарные слэши:
+```js
+//+ run
+var str = ' .. *!*"Скажи \\"Привет\\"!"*/!* ... ';
+
+alert(str); // .. "Скажи \"Привет\" ...
+```
+
diff --git a/11-regular-expressions-javascript/3-regexp-character-classes/article.md b/11-regular-expressions-javascript/3-regexp-character-classes/article.md
index 79c3f6de..a271a575 100644
--- a/11-regular-expressions-javascript/3-regexp-character-classes/article.md
+++ b/11-regular-expressions-javascript/3-regexp-character-classes/article.md
@@ -41,9 +41,9 @@ alert( str.match(reg) ); // массив всех совпадений: 7,9,0,3,
Наиболее часто используются:
1-5
и 1 - 5
почти идентичны.
diff --git a/11-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
index 97cd4508..09576d99 100644
--- a/11-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
@@ -22,4 +22,13 @@ alert( str.match(re) ); // #121212,#AA00ef
alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #12345678
```
-Если это является проблемой, то ее можно решить чуть более сложным выражением.
+Чтобы такого не было, можно добавить в конец `\b`:
+
+```js
+//+ run
+// цвет
+alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456
+
+// не цвет
+alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null
+```
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
index 78bea60d..ece24fb8 100644
--- 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
@@ -1,4 +1,4 @@
-Регулярное выражение для поиска 3-значного цвета: /#[a-f0-9]{3}/i
.
+Регулярное выражение для поиска 3-значного цвета вида `#abc`: /#[a-f0-9]{3}/i
.
Нужно добавить ещё три символа, причём нужны именно три, четыре или семь символов не нужны. Эти три символа либо есть, либо нет.
@@ -18,4 +18,13 @@ var str = "color: #3f3; background-color: #AA00ef; and: #abcd";
alert( str.match(re) ); // #3f3 #AA0ef #abc
```
+В последнем выражении #abcd
было найдено совпадение #abc
. Чтобы этого не происходило, добавим в конец \b
:
+```js
+//+ run
+var re = /#([a-f0-9]{3}){1,2}\b/gi;
+
+var str = "color: #3f3; background-color: #AA00ef; and: #abcd";
+
+alert( str.match(re) ); // #3f3 #AA0ef
+```
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
index 000555ac..419c0476 100644
--- 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
@@ -11,4 +11,4 @@ var str = "color: #3f3; background-color: #AA00ef; and: #abcd";
alert( str.match(re) ); // #3f3 #AA0ef
```
-P.S. Значения из четырёх и более букв, такие как `#abcd` мы в этой задаче также учитываем, но берём из них только необходимые для совпадения символы, то есть `#abc`.
+P.S. Значения из любого другого количества букв, кроме 3 и 6, такие как `#abcd`, не должны подходить под регэксп.
\ No newline at end of file