Skip to content

Commit a89afd1

Browse files
committed
Merge with mainstream and update translation 9-regular-expressions_04-regexp-escaping_article.md_ru
Signed-off-by: Alexander Ivanov <oshli.a.er@gmail.com>
1 parent ce212ff commit a89afd1

File tree

1 file changed

+11
-11
lines changed
  • 9-regular-expressions/04-regexp-escaping

1 file changed

+11
-11
lines changed

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11

2-
# Экранирование специальных символов
2+
# Экранирование, специальные символы
33

44
Как мы уже видели, обратная косая черта `"\"` используется для обозначения классов символов. Это специальный символ в регулярных выражениях (как и в обычных строках).
55

66
Есть и другие специальные символы, которые имеют особое значение в регулярном выражении. Они используются для более сложных поисковых конструкций. Вот полный перечень этих символов: `pattern:[ \ ^ $ . | ? * + ( )`.
77

8-
Не надо пытаться запомнить этот список -- скоро мы разберемся с каждым из них по отдельности, и таким образом вы выучите их наизусть.
8+
Не надо пытаться запомнить этот список -- скоро мы разберемся с каждым из них по отдельности, и таким образом вы выучите их "автоматически".
99

1010
## Экранирование символов
1111

@@ -27,7 +27,7 @@ alert( "Глава 511".match(/\d\.\d/) ); // null ("\." - ищет обычну
2727
alert( "function g()".match(/g\(\)/) ); // "g()"
2828
```
2929

30-
Если мы ищем обратную косую черту `\`, это специальный символ как в обычных строках, так и в регулярных выражениях, поэтому мы должны удвоить его.
30+
Если мы ищем обратную косую черту `\`, это специальный символ как в обычных строках, так и в регулярных выражениях, поэтому мы должны удвоить её.
3131

3232
```js run
3333
alert( "1\\2".match(/\\/) ); // '\'
@@ -43,41 +43,41 @@ alert( "1\\2".match(/\\/) ); // '\'
4343
alert( "/".match(/\//) ); // '/'
4444
```
4545

46-
С другой стороны, если мы не используем короткую запись `/.../`, а создаем регулярное выражение, используя `new RegExp`, тогда нам не нужно экранировать его:
46+
С другой стороны, если мы не используем короткую запись `/.../`, а создаем регулярное выражение, используя `new RegExp`, тогда нам не нужно экранировать косую черту:
4747

4848
```js run
4949
alert( "/".match(new RegExp("/")) ); // '/'
5050
```
5151

5252
## new RegExp
5353

54-
Если мы создаем регулярное выражение с помощью `new RegExp`, то нам не нужно учитывать `/`, но нужно соблюдать другие экранирования.
54+
Если мы создаем регулярное выражение с помощью `new RegExp`, то нам не нужно учитывать `/`, но нужно дополнительное экранирование.
5555

56-
Например, рассмотрим это:
56+
Рассмотрим такой пример:
5757

5858
```js run
5959
let reg = new RegExp("\d\.\d");
6060

6161
alert( "Глава 5.1".match(reg) ); // null
6262
```
6363

64-
Это работает с `pattern:/\d\.\d/`, но не работает с `new RegExp("\d\.\d")`, почему?
64+
Поиск работает с `pattern:/\d\.\d/`, но не работает с `new RegExp("\d\.\d")`, почему?
6565

66-
Причина в том, что обратные косые "воспринимаются" как строка. Помните, что обычные строки имеют свои специальные символы, такие как `\n`, и для экранирования используется обратная косая черта.
66+
Причина в том, что символы обратной косой черты "съедаются" строкой. Как вы помните, что обычные строки имеют свои специальные символы, такие как `\n`, и для экранирования используется обратная косая черта.
6767

68-
Пожалуйста, посмотрите, что на самом деле означает "\d\.\d":
68+
Вот как воспринимается строка "\d\.\d":
6969

7070
```js run
7171
alert("\d\.\d"); // d.d
7272
```
7373

74-
Кавычки "употребляют" обратные косые и интерпретируют их по своему усмотрению, например:
74+
Кавычки "съедают" символы обратной косой черты для себя, например:
7575

7676
- `\n` -- становится символом перевода строки,
7777
- `\u1234` -- становится символом Юникода с указанным номером,
7878
- ...А когда нет особого значения: как например для `\d` или`\z`, обратная косая черта просто удаляется.
7979

80-
Таким образом, вызов `new RegExp` получает строку без обратной косой черты. Вот почему это не работает!
80+
Таким образом, вызов `new RegExp` получает строку без обратной косой черты. Вот почему поиск не работает!
8181

8282
Чтобы исправить это, нам нужно удвоить обратную косую черту, потому что кавычки превращают `\\` в `\`:
8383

0 commit comments

Comments
 (0)