Skip to content

Commit c42aa5c

Browse files
committed
ревью статьи
1 parent fd34fee commit c42aa5c

1 file changed

Lines changed: 15 additions & 16 deletions

File tree

  • 9-regular-expressions/07-regexp-quantifiers

9-regular-expressions/07-regexp-quantifiers/article.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
Самый простой квантификатор — это число в фигурных скобках: `pattern:{n}`.
1010

11-
Он добавляется к символу (или символу класса, или `[...]` набору символов и т.д.) и указывает сколько их нам нужно.
11+
Он добавляется к символу (или символу класса, или `[...]` набору символов и т.д.) и указывает, сколько их нам нужно.
1212

13-
У него есть несколько продвинутых подходов, давайте посмотрим примеры:
13+
У него есть несколько вариантов использования, давайте посмотрим примеры:
1414

1515
Точное количество: `{5}`
1616
: Паттерн `pattern:\d{5}` обозначает ровно 5 цифр, в точности как `pattern:\d\d\d\d\d`.
@@ -21,10 +21,10 @@
2121
alert( "Мне 12345 лет".match(/\d{5}/) ); // "12345"
2222
```
2323

24-
Мы можем добавить `\b`, чтобы исключить числа длинней: `pattern:\b\d{5}\b`.
24+
Мы можем добавить `\b`, чтобы исключить числа длиннее: `pattern:\b\d{5}\b`.
2525

26-
Диапазон: `{3,5}`, от 3 до 5
27-
: Для того, чтобы найти числа c диапазоном от 3 до 5 знаков, мы можем указать границы в фигурных скобках: `pattern:\d{3,5}`
26+
Диапазон: `{3,5}`, от 3 до 5
27+
: Для того, чтобы найти числа c разрядностью от 3 до 5, мы можем указать границы в фигурных скобках: `pattern:\d{3,5}`
2828

2929
```js run
3030
alert( "Мне не 12, а 1234 года".match(/\d{3,5}/) ); // "1234"
@@ -40,7 +40,7 @@
4040

4141
Давайте вернёмся к строке `+7(903)-123-45-67`.
4242

43-
Число это последовательность одной или более цифр. Поэтому паттерн будет `pattern:\d{1,}`:
43+
Число - это последовательность из одной или более цифр. Поэтому паттерн будет `pattern:\d{1,}`:
4444

4545
```js run
4646
let str = "+7(903)-123-45-67";
@@ -52,10 +52,10 @@ alert(numbers); // 7,903,123,45,67
5252

5353
## Короткие обозначения
5454

55-
Для самых часто востребованных квантификаторов есть короткие обозначения:
55+
Для самых востребованных квантификаторов есть сокращённые формы записи:
5656

5757
`+`
58-
: Означает «один или более», то же что `{1,}`.
58+
: Означает «один или более». То же самое, что и `{1,}`.
5959

6060
Например, `pattern:\d+` находит числа:
6161

@@ -66,7 +66,7 @@ alert(numbers); // 7,903,123,45,67
6666
```
6767

6868
`?`
69-
: Означает «ноль или один», то же что и `{0,1}`. По сути, делает символ необязательным.
69+
: Означает «ноль или один». То же самое, что и `{0,1}`. По сути, делает символ необязательным.
7070

7171
Например, паттерн `pattern:ou?r` найдёт `match:o` после которого, возможно, следует `match:u`, а затем `match:r`.
7272

@@ -79,7 +79,7 @@ alert(numbers); // 7,903,123,45,67
7979
```
8080

8181
`*`
82-
: Означает «ноль или более», то же что `{0,}`. То есть, символ может повторяться много раз или вообще отсутствовать.
82+
: Означает «ноль или более». То же самое, что и `{0,}`. То есть символ может повторяться много раз или вообще отсутствовать.
8383

8484
Например, паттерн `pattern:\d0*` находит цифру вместе со всеми нулями, которые идут за ней (но могут и не идти):
8585

@@ -91,7 +91,6 @@ alert(numbers); // 7,903,123,45,67
9191

9292
```js run
9393
alert( "100 10 1".match(/\d0+/g) ); // 100, 10
94-
// 1 not matched, as 0+ requires at least one zero
9594
// 1 не подходит, т.к 0+ требует как минимум один ноль
9695
```
9796

@@ -105,14 +104,14 @@ alert(numbers); // 7,903,123,45,67
105104
alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345
106105
```
107106

108-
Регулярное выражение для поиска «открывающего HTML-тега без атрибутов», например, `<span>` или `<p>`: `pattern:/<[a-z]+>/i`
107+
Регулярное выражение для поиска «открывающего HTML-тега без атрибутов». Например, `<span>` или `<p>`: `pattern:/<[a-z]+>/i`
109108
: В действии:
110109

111110
```js run
112111
alert( "<body> ... </body>".match(/<[a-z]+>/gi) ); // <body>
113112
```
114113

115-
Это регулярное выражение ищет символ `pattern:'<'` за которым идут одна или более букв английского алфавита, а затем `pattern:'>'`.
114+
Это регулярное выражение ищет символ `pattern:'<'`, за которым идут одна или более букв английского алфавита, а затем `pattern:'>'`.
116115

117116
Регулярное выражение для поиска «открывающего HTML-тега без атрибутов» (улучшенный вариант): `pattern:/<[a-z][a-z0-9]*>/i`
118117
: Здесь регулярное выражение расширено: в соответствие со стандартом, HTML-тег может иметь символ цифры на любой позиции, кроме первой, например `<h1>`.
@@ -132,11 +131,11 @@ alert(numbers); // 7,903,123,45,67
132131
133132
В этих примерах мы видим общее правило: чем точнее регулярное выражение -- тем оно длиннее и сложнее.
134133
135-
Например, для HTML-тегов скорее всего подошло бы и более простое регулярное выражение: `pattern:<\w+>`.
134+
Например, для HTML-тегов, скорее всего, подошло бы и более простое регулярное выражение: `pattern:<\w+>`.
136135
137-
...Но т.к класс `pattern:\w` означает любую английскую букву или цифру или `'_'`, то для такого регулярного выражения подойдут и не теги, например `match:<_>`. Однако оно гораздо проще, чем паттерн `pattern:<[a-z][a-z0-9]*>`, но менее точное.
136+
...Но так как класс `pattern:\w` означает любую английскую букву или цифру, или `'_'`, то для такого регулярного выражения подойдут и нетеги, например `match:<_>`. То есть оно гораздо проще, чем паттерн `pattern:<[a-z][a-z0-9]*>`, но вместе с тем и менее точное.
138137
139138
Подойдёт ли нам `pattern:<\w+>` или нужно использовать `pattern:<[a-z][a-z0-9]*>`?
140139
141-
В реальной жизни допустимы оба варианта. Ответ на подобные вопросы зависит от того, насколько реально важна точность и насколько потом будет сложно или не сложно отфильтровать лишние совпадения.
140+
В реальной жизни допустимы оба варианта. Ответ на подобные вопросы зависит от того, насколько реально важна точность и насколько потом будет сложно или несложно отфильтровать лишние совпадения.
142141
```

0 commit comments

Comments
 (0)