You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Let's say we have a string like `+7(903)-123-45-67`and want to find all numbers in it. But unlike before, we are interested not in single digits, but full numbers: `7, 903, 123, 45, 67`.
3
+
Давайте возьмём строку вида `+7(903)-123-45-67`и найдём все числа в ней. Но теперь нас интересуют не цифры по отдельности, а именно числа: `7, 903, 123, 45, 67`.
4
4
5
-
A number is a sequence of 1 or more digits`\d`. To mark how many we need, we need to append a *quantifier*.
5
+
Число — это последовательность из 1 или более цифр`\d`. Чтобы отметить количество повторений, нам нужно указать *квантификатор*.
6
6
7
-
## Quantity {n}
7
+
## Количество {n}
8
8
9
-
The simplest quantifier is a number in curly braces: `pattern:{n}`.
9
+
Самый простой квантификатор — это число в фигурных скобках: `pattern:{n}`.
10
10
11
-
A quantifier is appended to a character (or a character class, or a `[...]`set etc) and specifies how many we need.
11
+
Он добавляется к символу (или символу класса, или `[...]`набору символов и т.д.) и указывает сколько их нам нужно.
12
12
13
-
It has a few advanced forms, let's see examples:
13
+
У него есть несколько продвинутых подходов, давайте посмотрим примеры:
14
14
15
-
The exact count: `{5}`
16
-
: `pattern:\d{5}`denotes exactly 5 digits, the same as `pattern:\d\d\d\d\d`.
15
+
Точное количество: `{5}`
16
+
: Регэксп `pattern:\d{5}`обозначает ровно 5 цифр, в точности как `pattern:\d\d\d\d\d`.
17
17
18
-
The example below looks for a 5-digit number:
18
+
Следующий пример находит пятизначное число:
19
19
20
20
```js run
21
-
alert( "I'm 12345 years old".match(/\d{5}/) ); // "12345"
We look for character `pattern:'<'` followed by one or more English letters, and then `pattern:'>'`.
115
+
Это регулярное выражение ищет символ `pattern:'<'` за которым идут одна или более букв английского алфавита, и затем `pattern:'>'`.
115
116
116
-
Regexp "open HTML-tag without attributes" (improved): `pattern:/<[a-z][a-z0-9]*>/i`
117
-
: Better regexp: according to the standard, HTML tag name may have a digit at any position except the first one, like`<h1>`.
117
+
Регэксп «открывающий HTML-тег без атрибутов» (лучше): `pattern:/<[a-z][a-z0-9]*>/i`
118
+
: Здесь регулярное выражение расширено: в соответствие со стандартом, HTML-тег может иметь символ цифры на любой позиции, кроме первой, например`<h1>`.
```smart header="To make a regexp more precise, we often need make it more complex"
131
-
We can see one common rule in these examples: the more precise is the regular expression -- the longer and more complex it is.
131
+
```smart header="Чтобы регулярное выражение было точнее, нам часто приходится делать его сложнее"
132
132
133
-
For instance, for HTML tags we could use a simpler regexp: `pattern:<\w+>`.
133
+
В этих примерах мы видим общее правило: чем точнее регулярное выражение -- тем оно длиннее и сложнее.
134
134
135
-
...But because `pattern:\w` means any English letter or a digit or `'_'`, the regexp also matches non-tags, for instance `match:<_>`. So it's much simpler than `pattern:<[a-z][a-z0-9]*>`, but less reliable.
135
+
Например, для HTML-тегов, скорее всего, подошло бы и более простое регулярное выражение : `pattern:<\w+>`.
136
136
137
-
Are we ok with `pattern:<\w+>` or we need `pattern:<[a-z][a-z0-9]*>`?
137
+
...Но т.к класс `pattern:\w` означает любую английскую букву или цифру или `'_'`, то для такого регэксп подойдут и не теги, например `match:<_>`. Однако он гораздо проще, чем регэксп `pattern:<[a-z][a-z0-9]*>`, но менее точный.
138
138
139
-
In real life both variants are acceptable. Depends on how tolerant we can be to "extra" matches and whether it's difficult or not to filter them out by other means.
139
+
Подойдёт ли нам `pattern:<\w+>` или нужно использовать `pattern:<[a-z][a-z0-9]*>`?
140
+
141
+
В реальной жизни допустимы оба варианта. Ответ на подобные вопросы зависит от того, насколько реально важна точность и насколько потом будет сложно или не сложно отфильтровать лишние совпадения.
0 commit comments