diff --git a/1-js/2-first-steps/6-variable-names/article.md b/1-js/2-first-steps/6-variable-names/article.md index ceb5ab74..202a4f03 100644 --- a/1-js/2-first-steps/6-variable-names/article.md +++ b/1-js/2-first-steps/6-variable-names/article.md @@ -95,7 +95,7 @@ var border_left_width; Есть причина и поважнее. Поскольку именно это имя переменной пришло в голову -- скорее всего, оно больше соответствует хранимым там данным, чем то, которое было мы придумали изначально. Исключения бывают, но в любом случае -- такое несовпадение -- это повод задуматься. -Чтобы удобно переименовывать переменную, нужно использовать [хороший редактор JavaScript](/editors), тогда этот процесс будет очень простым и быстрым. +Чтобы удобно переименовывать переменную, нужно использовать [хороший редактор JavaScript](/editor), тогда этот процесс будет очень простым и быстрым. [smart header="Если коротко..."] Смысл имени переменной -- это "имя на коробке", по которому мы сможем максимально быстро находить нужные нам данные. diff --git a/1-js/4-data-structures/7-array/9-eratosthenes-sieve/sieve.gif b/1-js/4-data-structures/7-array/9-eratosthenes-sieve/sieve.gif new file mode 100644 index 00000000..d1960cef Binary files /dev/null and b/1-js/4-data-structures/7-array/9-eratosthenes-sieve/sieve.gif differ diff --git a/1-js/4-data-structures/7-array/9-eratosthenes-sieve/task.md b/1-js/4-data-structures/7-array/9-eratosthenes-sieve/task.md index fe367dc3..73bc70c1 100644 --- a/1-js/4-data-structures/7-array/9-eratosthenes-sieve/task.md +++ b/1-js/4-data-structures/7-array/9-eratosthenes-sieve/task.md @@ -15,7 +15,7 @@
"
, затем текст, вплоть до новой кавычки '
, которая закрывает соответствие.
@@ -38,7 +38,7 @@ str = "He said:\"She's the one\"."
reg = /(['"])(.*?)\1/g
-alert( str.match(reg) ) // "She's the one"
+alert(str.match(reg)) // "She's the one"
```
Теперь работает верно!
diff --git a/10-regular-expressions-javascript/12-regexp-alternation/article.md b/10-regular-expressions-javascript/12-regexp-alternation/article.md
index b9a4cb55..adb1adc9 100644
--- a/10-regular-expressions-javascript/12-regexp-alternation/article.md
+++ b/10-regular-expressions-javascript/12-regexp-alternation/article.md
@@ -14,7 +14,7 @@ var reg = /html|php|css|java(script)?/gi
var str = "Сначала появился HTML, затем CSS, потом JavaScript"
-alert( str.match(reg) ) // 'HTML', 'CSS', 'JavaScript'
+alert(str.match(reg)) // 'HTML', 'CSS', 'JavaScript'
```
**Альтернация имеет очень низкий приоритет.**
diff --git a/10-regular-expressions-javascript/13-regexp-ahchors-and-multiline-mode/article.md b/10-regular-expressions-javascript/13-regexp-ahchors-and-multiline-mode/article.md
index 736de5d2..3ac236a6 100644
--- a/10-regular-expressions-javascript/13-regexp-ahchors-and-multiline-mode/article.md
+++ b/10-regular-expressions-javascript/13-regexp-ahchors-and-multiline-mode/article.md
@@ -16,7 +16,7 @@
```js
//+ run
var str = '100500 попугаев съели 500100 бананов!';
-alert( str.match( /\d+/ig ) // 100500, 500100 (все числа)
+alert(str.match(/\d+/ig) // 100500, 500100 (все числа)
```
А с кареткой:
@@ -24,7 +24,7 @@ alert( str.match( /\d+/ig ) // 100500, 500100 (все числа)
```js
//+ run
var str = '100500 попугаев съели 500100 бананов!';
-alert( str.match( /^\d+/ig ) // 100500 (только в начале строки)*!*
+alert(str.match(/^\d+/ig) // 100500 (только в начале строки)*!*
```
Знак доллара $
используют, чтобы указать, что паттерн должен заканчиваться в конце текста.
@@ -34,7 +34,7 @@ alert( str.match( /^\d+/ig ) // 100500 (только в начале строк
```js
//+ run
var str = '100500 попугаев съели 500100 бананов!';
-alert( str.match( /\d+$/ig ) // null (в начале строки чисел нет)*!*
+alert(str.match(/\d+$/ig) // null (в начале строки чисел нет)*!*
```
Якоря используют одновременно, чтобы указать, что паттерн должен охватывать текст с начала и до конца. Обычно это требуется при валидации.
@@ -46,7 +46,7 @@ alert( str.match( /\d+$/ig ) // null (в начале строки чисел
```js
//+ run
var num = "ля-ля 12.34";
-alert( num.match( /\d+\.\d+/ig) ); // 12.34
+alert( num.match(/\d+\.\d+/ig) ); // 12.34
```
Если мы хотим проверить, что `num` *целиком* соответствует паттерну \d+\.\d+
, то укажем якоря по обе стороны от него:
@@ -54,9 +54,9 @@ alert( num.match( /\d+\.\d+/ig) ); // 12.34
```js
//+ run
var num = "ля-ля 12.34";
-alert( num.match( /^\d+\.\d+$/ig) ); // null, не дробь
+alert( num.match(/^\d+\.\d+$/ig) ); // null, не дробь
var num = "12.34";
-alert( num.match( /^\d+\.\d+$/ig) ); // 12.34, дробь!
+alert( num.match(/^\d+\.\d+$/ig) ); // 12.34, дробь!
```
diff --git a/10-regular-expressions-javascript/14-regexp-multiline-mode/article.md b/10-regular-expressions-javascript/14-regexp-multiline-mode/article.md
index d2e147e8..1f0e0d19 100644
--- a/10-regular-expressions-javascript/14-regexp-multiline-mode/article.md
+++ b/10-regular-expressions-javascript/14-regexp-multiline-mode/article.md
@@ -15,7 +15,7 @@ var str = '1е место: Винни-пух\n' +
'2е место: Пятачок\n' +
'33е место: Слонопотам';
-alert( str.match(/^\d+/gm ) ); // 1, 2, 33*!*
+alert( str.match(/^\d+/gm) ); // 1, 2, 33*!*
```
Обратим внимание -- без флага /m
было бы только первое число:
@@ -26,7 +26,7 @@ var str = '1е место: Винни-пух\n' +
'2е место: Пятачок\n' +
'33е место: Слонопотам';
-alert( str.match(/^\d+/g ) ); // 1
+alert( str.match(/^\d+/g) ); // 1
```
Это потому что в обычном режиме каретка ^
-- это только начало текста.
diff --git a/10-regular-expressions-javascript/15-regexp-word-boundary/article.md b/10-regular-expressions-javascript/15-regexp-word-boundary/article.md
index 09ddc758..50c64d53 100644
--- a/10-regular-expressions-javascript/15-regexp-word-boundary/article.md
+++ b/10-regular-expressions-javascript/15-regexp-word-boundary/article.md
@@ -6,7 +6,7 @@ For example, \bdog\b
matches a standalone dog
matches, because the previous char is a space (non-wordly), and the next position is text end.
@@ -16,14 +16,14 @@ If the word is long enough, it may match multiple times:
```js
//+ run
-showMatch( "Boombaroom", /\w{4}/g) // 'Boom', 'baro'
+showMatch("Boombaroom", /\w{4}/g) // 'Boom', 'baro'
```
Appending \b
causes \w{4}\b
to match only at word end:
```js
//+ run
-showMatch( "Because life is awesome", /\w{4}\b/g) // 'ause', 'life', 'some'
+showMatch("Because life is awesome", /\w{4}\b/g) // 'ause', 'life', 'some'
```
**The word boundary \b
like ^
and $
doesn't match a char. It only performs the check.**
@@ -32,7 +32,7 @@ Let's add the check from another side, \b\w{4}\b
:
```js
//+ run
-showMatch( "Because life is awesome", /\b\w{4}\b/g) // 'life'
+showMatch("Because life is awesome", /\b\w{4}\b/g) // 'life'
```
Now there is only one result life
.
diff --git a/10-regular-expressions-javascript/2-regexp-methods/article.md b/10-regular-expressions-javascript/2-regexp-methods/article.md
index d637ea65..a0c4b801 100644
--- a/10-regular-expressions-javascript/2-regexp-methods/article.md
+++ b/10-regular-expressions-javascript/2-regexp-methods/article.md
@@ -112,7 +112,7 @@ alert( result.index ); // undefined
var str = "Ой-йой-йой";
// результат match не всегда массив!
-alert( str.match( /лю/gi ).length ) // ошибка! нет свойства length у null
+alert(str.match(/лю/gi).length) // ошибка! нет свойства length у null
```
[/warn]
@@ -124,7 +124,7 @@ alert( str.match( /лю/gi ).length ) // ошибка! нет свойства l
```js
//+ run
-alert( '12-34-56'.split('-') ) // [12, 34, 56]
+alert('12-34-56'.split('-')) // [12, 34, 56]
```
Можно передать в него и регулярное выражение, тогда он разобьёт строку по всем совпадениям.
@@ -133,7 +133,7 @@ alert( '12-34-56'.split('-') ) // [12, 34, 56]
```js
//+ run
-alert( '12-34-56'.split(/-/) ) // [12, 34, 56]
+alert('12-34-56'.split(/-/)) // [12, 34, 56]
```
## str.replace(reg, str|func)
@@ -145,7 +145,7 @@ alert( '12-34-56'.split(/-/) ) // [12, 34, 56]
```js
//+ run
// заменить дефис на двоеточие
-alert( '12-34-56'.replace("-", ":") ) // 12:34-56
+alert('12-34-56'.replace("-", ":")) // 12:34-56
```
**При вызове со строкой замены `replace` всегда заменяет только первое совпадение.**
@@ -198,7 +198,7 @@ alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56
//+ run
var str = "Василий Пупкин";
-alert( str.replace( /(Василий) (Пупкин)/ ,'$2, $1') ) // Пупкин, Василий
+alert(str.replace(/(Василий) (Пупкин)/, '$2, $1')) // Пупкин, Василий
```
Ещё пример, с использованием `$&`:
@@ -207,7 +207,7 @@ alert( str.replace( /(Василий) (Пупкин)/ ,'$2, $1') ) // Пупки
//+ run
var str = "Василий Пупкин";
-alert( str.replace( /Василий Пупкин/ ,'Великий $&!') ) // Великий Василий Пупкин!
+alert(str.replace(/Василий Пупкин/, 'Великий $&!')) // Великий Василий Пупкин!
```
**Для ситуаций, который требуют максимально "умной" замены, в качестве второго аргумента предусмотрена функция.**
@@ -221,9 +221,9 @@ alert( str.replace( /Василий Пупкин/ ,'Великий $&!') ) // В
var i = 0;
// заменить каждое вхождение "ой" на результат вызова функции
-alert( "ОЙ-Ой-ой".replace( /ой/gi, function() {
- return ++i;
-}) ); // 1-2-3
+alert("ОЙ-Ой-ой".replace(/ой/gi, function() {
+ return ++i;
+})); // 1-2-3
```
В примере выше функция просто возвращала числа по очереди, но обычно она основывается на поисковых данных.
@@ -245,12 +245,12 @@ alert( "ОЙ-Ой-ой".replace( /ой/gi, function() {
//+ run
// вывести и заменить все совпадения
function replacer(str, offset, s) {
- alert("Найдено: " + str + " на позиции: " + offset + " в строке: " + s);
+ alert( "Найдено: " + str + " на позиции: " + offset + " в строке: " + s );
return str.toLowerCase();
-}
+}
-var result = "ОЙ-Ой-ой".replace( /ой/gi, replacer);
-alert('Результат: ' + result); // Результат: ой-ой-ой
+var result = "ОЙ-Ой-ой".replace(/ой/gi, replacer);
+alert( 'Результат: ' + result ); // Результат: ой-ой-ой
```
С двумя скобочными выражениями -- аргументов уже 5:
@@ -260,8 +260,8 @@ alert('Результат: ' + result); // Результат: ой-ой-ой
function replacer(str, name, surname, offset, s) {
return surname + ", " + name;
}
-
-alert( str.replace( /(Василий) (Пупкин)/ , replacer) ) // Пупкин, Василий
+
+alert(str.replace(/(Василий) (Пупкин)/, replacer)) // Пупкин, Василий
```
Функция -- это самый мощный инструмент для замены, какой только может быть. Она владеет всей информацией о совпадении и имеет доступ к замыканию, поэтому может всё.
@@ -319,14 +319,14 @@ var str = 'Многое по JavaScript можно найти на сайте ht
var regexp = /javascript/ig;
-alert("Начальное значение lastIndex: " + regexp.lastIndex);
+alert( "Начальное значение lastIndex: " + regexp.lastIndex );
-while( result = regexp.exec(str) ) {
- alert('Найдено: ' + result[0] + ' на позиции:' + result.index);
- alert('Свойство lastIndex: ' + regexp.lastIndex);
+while (result = regexp.exec(str)) {
+ alert( 'Найдено: ' + result[0] + ' на позиции:' + result.index );
+ alert( 'Свойство lastIndex: ' + regexp.lastIndex );
}
-alert('Конечное значение lastIndex: ' + regexp.lastIndex);
+alert( 'Конечное значение lastIndex: ' + regexp.lastIndex );
```
Здесь цикл продолжается до тех пор, пока `regexp.exec` не вернёт `null`, что означает "совпадений больше нет".
diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/article.md b/10-regular-expressions-javascript/3-regexp-character-classes/article.md
index 668cfbe5..2a9e449a 100644
--- a/10-regular-expressions-javascript/3-regexp-character-classes/article.md
+++ b/10-regular-expressions-javascript/3-regexp-character-classes/article.md
@@ -114,21 +114,21 @@ alert( str.replace(/\D/g, "") ); // 79031234567
```js
//+ run
-alert( "1 - 5".match (/\d-\d/) ); // null, нет совпадений!
+alert( "1 - 5".match(/\d-\d/) ); // null, нет совпадений!
```
Поправим это, добавив в регэксп пробелы:
```js
//+ run
-alert( "1 - 5".match (/\d - \d/) ); // работает, пробелы вокруг дефиса
+alert( "1 - 5".match(/\d - \d/) ); // работает, пробелы вокруг дефиса
```
В регулярные выражения также не надо вставлять лишние пробелы. Все символы имеют значение:
```js
//+ run
-alert( "1-5".match( /\d - \d/ ) ); // null, так как в строке 1-5 нет пробелов
+alert( "1-5".match(/\d - \d/) ); // null, так как в строке 1-5 нет пробелов
```
## Класс точка
@@ -159,7 +159,7 @@ alert( "CS 4".match(re) ); // найдено "CS 4" (пробел тоже си
```js
//+ run
-alert( "CS4".match (/CS.4/) ); // нет совпадений, так как для точки нет символа
+alert( "CS4".match(/CS.4/) ); // нет совпадений, так как для точки нет символа
```
## Экранирование специальных символов
@@ -180,14 +180,14 @@ alert( "CS4".match (/CS.4/) ); // нет совпадений, так как д
```js
//+ run
-alert( "Глава 5.1".match( /\d\.\d/ ) ); // 5.1
+alert( "Глава 5.1".match(/\d\.\d/) ); // 5.1
```
Круглые скобки также являются специальными символами, так что для поиска именно скобки нужно использовать `\(`. Пример ниже ищет строку `"g()"`:
```js
//+ run
-alert( "function g()".match( /g\(\)/ ) ); // "g()"
+alert( "function g()".match(/g\(\)/) ); // "g()"
```
Сам символ слэш `'/'`, хотя и не является специальными символом в регулярных выражениях, но открывает-закрывает регэксп в синтаксисе /...pattern.../
, поэтому его тоже нужно экранировать.
@@ -196,7 +196,7 @@ alert( "function g()".match( /g\(\)/ ) ); // "g()"
```js
//+ run
-alert( "/".match( /\// ) ); // '/'
+alert( "/".match(/\//) ); // '/'
```
Ну и, наконец, если нам нужно найти сам обратный слэш `\`, то его нужно просто задублировать.
@@ -205,7 +205,7 @@ alert( "/".match( /\// ) ); // '/'
```js
//+ run
-alert( "1\2".match( /\\/ ) ); // '\'
+alert( "1\2".match(/\\/) ); // '\'
```
## Итого
diff --git a/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/article.md b/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/article.md
index 2cc997de..00f2481f 100644
--- a/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/article.md
+++ b/10-regular-expressions-javascript/5-regexp-character-sets-and-ranges/article.md
@@ -13,7 +13,7 @@
```js
//+ run
// найти [г или т], а затем "оп"
-alert( "Гоп-стоп".match( /[гт]оп/gi ) ); // "Гоп", "топ"
+alert( "Гоп-стоп".match(/[гт]оп/gi) ); // "Гоп", "топ"
```
Обратим внимание: несмотря на то, что в наборе указано несколько символов, в совпадении должен присутствовать *ровно один* из них.
@@ -23,7 +23,7 @@ alert( "Гоп-стоп".match( /[гт]оп/gi ) ); // "Гоп", "топ"
```js
//+ run
// найти "В", затем [у или а], затем "ля"
-alert( "Вуаля".match( /В[уа]ля/ ) ); // совпадений нет
+alert( "Вуаля".match(/В[уа]ля/) ); // совпадений нет
```
Поиск подразумевает:
@@ -69,7 +69,7 @@ alert( "Exception 0xAF".match(/x[0-9A-F][0-9A-F]/g) );
//+ run
var str = "The sun is rising!";
-alert( str.match( /\w+/g ) ); // The, sun, is, rising*!*
+alert( str.match(/\w+/g) ); // The, sun, is, rising*!*
```
А если есть слова и на русском?
@@ -78,7 +78,7 @@ alert( str.match( /\w+/g ) ); // The, sun, is, rising*!*
//+ run
var str = "Солнце встаёт!";
-alert( str.match( /\w+/g ) ); // null*!*
+alert( str.match(/\w+/g) ); // null*!*
```
Ничего не найдено! Это можно понять, ведь \w
-- это именно английская букво-цифра, как можно видеть из аналога [a-zA-Z0-9_]
.
@@ -91,7 +91,7 @@ alert( str.match( /\w+/g ) ); // null*!*
//+ run
var str = "Солнце (the sun) встаёт!";
-alert( str.match( /[\wа-я]+/gi ) ); // Солнце, the, sun, вста, т*!*
+alert( str.match(/[\wа-я]+/gi) ); // Солнце, the, sun, вста, т*!*
```
...Присмотритесь внимательно к предыдущему примеру! Вы видите странность? Оно не находит букву ё
, более того -- считает её разрывом в слове. Причина -- в кодировке юникод, она подробно раскрыта в главе [](/string).
@@ -102,7 +102,7 @@ alert( str.match( /[\wа-я]+/gi ) ); // Солнце, the, sun, вста, т*!*
//+ run
var str = "Солнце (the sun) встаёт!";
-alert( str.match( /[\wа-яё]+/gi ) ); // Солнце, the, sun, встаёт*!*
+alert( str.match(/[\wа-яё]+/gi) ); // Солнце, the, sun, встаёт*!*
```
Теперь всё в порядке.
@@ -125,7 +125,7 @@ alert( str.match( /[\wа-яё]+/gi ) ); // Солнце, the, sun, встаёт*
```js
//+ run
-alert( "alice15@gmail.com".match( /[^\d\sA-Z]/gi ) ); // "@", "."
+alert( "alice15@gmail.com".match(/[^\d\sA-Z]/gi) ); // "@", "."
```
## Не нужно экранирование
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/solution.md b/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/solution.md
index 350fdc0e..4eb72c42 100644
--- a/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/solution.md
+++ b/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/solution.md
@@ -4,6 +4,6 @@
```js
//+ run
var reg = /\.{3,}/g;
-alert("Привет!... Как дела?.....".match(reg)); // ..., .....
+alert( "Привет!... Как дела?.....".match(reg) ); // ..., .....
```
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md b/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md
index 750f6c59..414a49b4 100644
--- a/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md
+++ b/10-regular-expressions-javascript/7-regexp-quantifiers/1-find-text-manydots/task.md
@@ -9,6 +9,6 @@
```js
var reg = /ваше выражение/g;
-alert("Привет!... Как дела?.....".match(reg)); // ..., .....
+alert( "Привет!... Как дела?.....".match(reg) ); // ..., .....
```
diff --git a/10-regular-expressions-javascript/7-regexp-quantifiers/article.md b/10-regular-expressions-javascript/7-regexp-quantifiers/article.md
index ac0b6608..38f2ccf8 100644
--- a/10-regular-expressions-javascript/7-regexp-quantifiers/article.md
+++ b/10-regular-expressions-javascript/7-regexp-quantifiers/article.md
@@ -20,7 +20,7 @@
```js
//+ run
-alert( "Мне 12345 лет".match (/\d{5}/) ); // "12345"
+alert( "Мне 12345 лет".match(/\d{5}/) ); // "12345"
```
@@ -29,14 +29,14 @@ alert( "Мне 12345 лет".match (/\d{5}/) ); // "12345"
```js
//+ run
-alert( "Мне не 12, а 1234 года".match( /\d{3,5}/ ) ); // "1234"
+alert( "Мне не 12, а 1234 года".match(/\d{3,5}/) ); // "1234"
```
Последнее значение можно и не указывать. Тогда выражение \d{3,}
найдет числа, длиной от трех цифр:
```js
//+ run
-alert( "Мне не 12, а 345678 лет".match( /\d{3,5}/ ) ); // "345678"
+alert( "Мне не 12, а 345678 лет".match(/\d{3,5}/) ); // "345678"
```
@@ -47,7 +47,7 @@ alert( "Мне не 12, а 345678 лет".match( /\d{3,5}/ ) ); // "345678"
//+ run
var str = "+7(903)-123-45-67";
-alert( str.match( /\d{1,}/g ) ); // 7,903,123,45,67
+alert( str.match(/\d{1,}/g) ); // 7,903,123,45,67
```
@@ -65,7 +65,7 @@ alert( str.match( /\d{1,}/g ) ); // 7,903,123,45,67
//+ run
var str = "+7(903)-123-45-67";
-alert( str.match( /\d+/g ) ); // 7,903,123,45,67
+alert( str.match(/\d+/g) ); // 7,903,123,45,67
```
@@ -80,7 +80,7 @@ alert( str.match( /\d+/g ) ); // 7,903,123,45,67
//+ run
var str = "Можно писать color или colour (британский вариант)";
-alert( str.match( /colou?r/g ) ); // color, colour
+alert( str.match(/colou?r/g) ); // color, colour
```
@@ -91,14 +91,14 @@ alert( str.match( /colou?r/g ) ); // color, colour
```js
//+ run
-alert( "100 10 1".match( /\d0*/g ) ); // 100, 10, 1
+alert( "100 10 1".match(/\d0*/g) ); // 100, 10, 1
```
Сравните это с `'+'` (один или более):
```js
//+ run
-alert( "100 10 1".match( /\d0+/g ) ); // 100, 10
+alert( "100 10 1".match(/\d0+/g) ); // 100, 10
```
@@ -115,7 +115,7 @@ alert( "100 10 1".match( /\d0+/g ) ); // 100, 10
В действии:
```js
//+ run
-alert( "0 1 12.345 7890".match( /\d+\.\d+/g ) ); // 123.45
+alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 123.45
```
@@ -124,7 +124,7 @@ alert( "0 1 12.345 7890".match( /\d+\.\d+/g ) ); // 123.45
```js
//+ run
-alert( " ... ".match ( /<[a-z]+>/gi ) ); //
+alert( " ... ".match(/<[a-z]+>/gi) ); //
```
Это регулярное выражение ищет символ '<'
, за которым идут одна или более букв английского алфавита, и затем '>'
.
@@ -135,7 +135,7 @@ alert( " ... ".match ( /<[a-z]+>/gi ) ); //
```js
//+ run
-alert( "/go+/
означал бы g
, после которого идёт одна или более o
, например: goooo
.
@@ -25,17 +25,17 @@ alert( 'Gogogo now!'.match( /(go)+/i ); // "Gogogo"
Для удобства заключим его в скобки: <(.*?)>
. Тогда содержимое скобок можно будет получить отдельно.
-Используем метод [:String#match]. В результирующем массиве будет сначала всё совпадение, а далее -- скобочные группы, в данном случае -- только одна:
+Используем метод [String#match](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/match). В результирующем массиве будет сначала всё совпадение, а далее -- скобочные группы, в данном случае -- только одна:
```js
//+ run
var str = '(z)?
в ней ничего нет.
diff --git a/10-regular-expressions-javascript/index.md b/10-regular-expressions-javascript/index.md
index 6dc875d7..f96e0193 100644
--- a/10-regular-expressions-javascript/index.md
+++ b/10-regular-expressions-javascript/index.md
@@ -1,5 +1,3 @@
# Регулярные выражения [в работе]
-Регулярные выражения -- мощный способ поиска и замены для строк.
-
-В JavaScript они поддерживаются в простом варианте, менее мощном, чем в большинстве других языков. Но зато нам будет проще их изучить.
+Регулярные выражения -- мощный способ поиска и замены для строк.
\ No newline at end of file
diff --git a/12-extra/10-cookie/article.md b/12-extra/10-cookie/article.md
index 3b232a91..3887263f 100644
--- a/12-extra/10-cookie/article.md
+++ b/12-extra/10-cookie/article.md
@@ -13,11 +13,11 @@
alert( document.cookie );
```
-Эта строка состоит из пар `ключ=значение`, которые перечисляются через точку с запятой с пробелом `; `.
+Эта строка состоит из пар `ключ=значение`, которые перечисляются через точку с запятой с пробелом `"; "`.
-Значит, чтобы прочитать cookie, достаточно разбить строку по `; `, и затем найти нужный ключ. Это можно делать либо через `split` и работу с массивом, либо через регулярное выражение.
+Значит, чтобы прочитать cookie, достаточно разбить строку по `"; "`, и затем найти нужный ключ. Это можно делать либо через `split` и работу с массивом, либо через регулярное выражение.
-### Функция getCookie(name)
+## Функция getCookie(name)
Следующая функция `getCookie(name)` возвращает cookie с именем `name`:
@@ -63,7 +63,7 @@ document.cookie = "userName=Vasya";
```js
// +1 день от текущего момента
var date = new Date;
-date.setDate( date.getDate() + 1 );
+date.setDate(date.getDate() + 1);
alert( date.toUTCString() );
```
@@ -78,8 +78,8 @@ alert( date.toUTCString() );
```js
//+ run
-var date = new Date( new Date().getTime() + 60*1000 );
-document.cookie="name=value; path=/; expires="+date.toUTCString();
+var date = new Date(new Date().getTime() + 60 * 1000);
+document.cookie = "name=value; path=/; expires=" + date.toUTCString();
```
Чтобы удалить это cookie:
@@ -87,12 +87,12 @@ document.cookie="name=value; path=/; expires="+date.toUTCString();
```js
//+ run
var date = new Date(0);
-document.cookie="name=; path=/; expires="+date.toUTCString();
+document.cookie = "name=; path=/; expires=" + date.toUTCString();
```
При удалении значение не важно. Можно его не указывать, как сделано в коде выше.
-### Функция setCookie(name, value, options)
+## Функция setCookie(name, value, options)
Если собрать все настройки воедино, вот такая функция ставит куки:
@@ -104,23 +104,23 @@ function setCookie(name, value, options) {
if (typeof expires == "number" && expires) {
var d = new Date();
- d.setTime(d.getTime() + expires*1000);
+ d.setTime(d.getTime() + expires * 1000);
expires = options.expires = d;
}
- if (expires && expires.toUTCString) {
- options.expires = expires.toUTCString();
+ if (expires && expires.toUTCString) {
+ options.expires = expires.toUTCString();
}
value = encodeURIComponent(value);
var updatedCookie = name + "=" + value;
- for(var propName in options) {
+ for (var propName in options) {
updatedCookie += "; " + propName;
- var propValue = options[propName];
- if (propValue !== true) {
+ var propValue = options[propName];
+ if (propValue !== true) {
updatedCookie += "=" + propValue;
- }
+ }
}
document.cookie = updatedCookie;
@@ -137,7 +137,7 @@ function setCookie(name, value, options) {
replace
заменит все вхождения (при указании флага g
):
@@ -152,7 +152,7 @@ alert("2 ++ 1".replace(/\+/g, "*"))
Следующий пример произведет операции вычитания:
```js
-//+ run
+//+ run no-beautify
var str = "count 36 - 26, 18 - 9"
str = str.replace(/(\d+) - (\d+)/g, function(a,b,c) { return b-c })
alert(str)
@@ -161,32 +161,32 @@ alert(str)
### Найти всё
В javascript нет одного универсального метода для поиска всех совпадений.
-Для поиска без запоминания скобочных групп - можно использовать [:String#match|]:
+Для поиска без запоминания скобочных групп - можно использовать [String#match](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/match):
```js
//+ run
var str = "count 36-26, 18-9"
-var re = /(\d+)-(\d+)/g
+var re = /(\d+)-(\d+)/g
result = str.match(re)
-for(var i=0; i'g'
. Тогда результат поиска, запомненный в свойстве lastIndex
объекта RegExp
используется как точка отсчета для следующего поиска:
```js
//+ run
var str = "count 36-26, 18-9"
-var re = /(\d+)-(\d+)/g
+var re = /(\d+)-(\d+)/g
var res
-while ( (res = re.exec(str)) != null) {
- alert("Найдено " + res[0] + ": ("+ res[1]+") и ("+res[2]+")")
- alert("Дальше ищу с позиции "+re.lastIndex)
+while ((res = re.exec(str)) != null) {
+ alert("Найдено " + res[0] + ": (" + res[1] + ") и (" + res[2] + ")")
+ alert("Дальше ищу с позиции " + re.lastIndex)
}
```
diff --git a/12-extra/3-templates/article.md b/12-extra/3-templates/article.md
index 1165be14..e69a0253 100644
--- a/12-extra/3-templates/article.md
+++ b/12-extra/3-templates/article.md
@@ -16,6 +16,7 @@
Пример:
```html
+
```
@@ -281,6 +281,7 @@ function ieTextRangeHighlight(text) {
Эту задачу мы уже решали в самом начале статьи в примере с миксом. Теперь рассмотрим код:
```js
+//+ no-beautify
function getSelectionText() {
var txt = '';
if (txt = window.getSelection) // Не IE, используем метод getSelection
@@ -342,21 +343,21 @@ IE предоставляет собственный интерфейс взаи
```
@@ -372,7 +373,7 @@ function clearSelection() {
try {
// современный объект Selection
window.getSelection().removeAllRanges();
- } catch(e) {
+ } catch (e) {
// для IE8-
document.selection.empty();
}
@@ -393,15 +394,15 @@ function clearSelection() {
```js
var range = getRangeObject();
- if(range) {
- alert(range);
- alert(range.startContainer.nodeValue);
- alert(range.startOffset);
- alert(range.endOffset);
+ if (range) {
+ alert( range );
+ alert( range.startContainer.nodeValue );
+ alert( range.startOffset );
+ alert( range.endOffset );
} else {
- alert('Ничего не выделено');
+ alert( 'Ничего не выделено' );
+ }
}
-}
```
В действии:
diff --git a/2-ui/1-document/1-browser-environment/article.md b/2-ui/1-document/1-browser-environment/article.md
index 12515f49..c713e303 100644
--- a/2-ui/1-document/1-browser-environment/article.md
+++ b/2-ui/1-document/1-browser-environment/article.md
@@ -29,7 +29,7 @@ window.open('http://ya.ru');
```js
//+ run
document.body.style.background = 'red';
-alert('Элемент BODY стал красным, а сейчас обратно вернётся');
+alert( 'Элемент BODY стал красным, а сейчас обратно вернётся' );
document.body.style.background = '';
```
@@ -57,7 +57,7 @@ BOM -- это объекты для работы с чем угодно, кро
Пример использования:
```js
//+ run
-alert(location.href); // выведет текущий адрес
+alert( location.href ); // выведет текущий адрес
```
Большинство возможностей BOM стандартизированы в [HTML 5](http://www.w3.org/TR/html5/Overview.html), хотя различные браузеры и предоставляют зачастую что-то своё, в дополнение к стандарту.
diff --git a/2-ui/1-document/10-compare-document-position/article.md b/2-ui/1-document/10-compare-document-position/article.md
index 4e958160..e8374584 100644
--- a/2-ui/1-document/10-compare-document-position/article.md
+++ b/2-ui/1-document/10-compare-document-position/article.md
@@ -57,21 +57,21 @@ var result = nodeA.compareDocumentPosition(nodeB);
```
@@ -111,13 +111,13 @@ alert( 20..toString(2) );
```
@@ -139,18 +139,17 @@ if( body.compareDocumentPosition(li) & 16 ) {
```js
// код с http://compatibility.shwups-cms.ch/en/polyfills/?&id=82
-(function(){
+(function() {
var el = document.documentElement;
- if( !el.compareDocumentPosition && el.sourceIndex !== undefined ){
+ if (!el.compareDocumentPosition && el.sourceIndex !== undefined) {
- Element.prototype.compareDocumentPosition = function(other){
+ Element.prototype.compareDocumentPosition = function(other) {
return (this != other && this.contains(other) && 16) +
- (this != other && other.contains(this) && 8) +
- (this.sourceIndex >= 0 && other.sourceIndex >= 0 ?
- (this.sourceIndex < other.sourceIndex && 4) +
- (this.sourceIndex > other.sourceIndex && 2)
- : 1
- ) + 0;
+ (this != other && other.contains(this) && 8) +
+ (this.sourceIndex >= 0 && other.sourceIndex >= 0 ?
+ (this.sourceIndex < other.sourceIndex && 4) +
+ (this.sourceIndex > other.sourceIndex && 2) : 1
+ ) + 0;
}
}
}());
diff --git a/2-ui/1-document/11-modifying-document/10-clock-setinterval/solution.md b/2-ui/1-document/11-modifying-document/10-clock-setinterval/solution.md
index 682e2e1a..d591b6b4 100644
--- a/2-ui/1-document/11-modifying-document/10-clock-setinterval/solution.md
+++ b/2-ui/1-document/11-modifying-document/10-clock-setinterval/solution.md
@@ -4,7 +4,7 @@
```html
Test | +Test |
+ p.after(document.createElement('hr')) + + ``` diff --git a/2-ui/1-document/13-document-write/article.md b/2-ui/1-document/13-document-write/article.md index 4fe6b849..49f2e34e 100644 --- a/2-ui/1-document/13-document-write/article.md +++ b/2-ui/1-document/13-document-write/article.md @@ -13,11 +13,11 @@ HTML-документ ниже будет содержать `1 2 3`. ```html
-1 - -3 + 1 + + 3 ``` @@ -29,14 +29,18 @@ HTML-документ ниже будет содержать `1 2 3`. ```html - +