47 lines
2 KiB
Markdown
47 lines
2 KiB
Markdown
# Цифровые квантификаторы {n}
|
||
|
||
Рассмотрим задачу -- взять телефон вида `+7(903)-123-45-67` и найти все числа в нём. То есть, нас интересует результат вида `7, 903, 123, 45, 67`.
|
||
|
||
Нечто похожее мы уже делали ранее -- мы искали цифры. Для этого было достаточно класса `\d`. Но здесь нужно искать *числа* -- последовательности из 1 или более цифр.
|
||
|
||
**Количество повторений символа можно указать с помощью числа в фигурных скобках: `{n}`.**
|
||
|
||
<dl>
|
||
<dt>Точное количество: `{5}`</dt>
|
||
<dd>Паттерн <code class="pattern">\d{5}</code> обозначает 5 цифр, как и <code class="pattern>\d\d\d\d\d</code>.
|
||
|
||
Следующий пример находит пятизначное число.
|
||
|
||
```js
|
||
//+ run
|
||
alert( "Мне 12345 лет".match (/\d{5}/) ); // "12345"
|
||
```
|
||
|
||
</dd>
|
||
<dt>Количество от-до: `{3,5}`</dt>
|
||
<dd>Для того, чтобы найти, например, числа размером от трёх до пяти знаков, нужно указать границы в фигурных скобках: `\d{3,5}`
|
||
|
||
```js
|
||
//+ run
|
||
alert( "Мне не 12, а 1234 года".match( /\d{3,5}/ ) ); // "1234"
|
||
```
|
||
|
||
Последнее значение можно и не указывать. Тогда выражение `\d{3,}` найдет числа, длиной от трех знаков:
|
||
|
||
```js
|
||
//+ run
|
||
alert( "Мне не 12, а 345678 лет".match( /\d{3,5}/ ) ); // "345678"
|
||
```
|
||
|
||
</dd>
|
||
</dl>
|
||
|
||
В случае с телефоном нам нужны числа - одна или более цифр подряд. Этой задаче соответствует регулярное выражение <code class="pattern">\d{1,}</code>:
|
||
|
||
```js
|
||
//+ run
|
||
var str = "+7(903)-123-45-67";
|
||
|
||
alert( str.match( /\d{1,}/g ) ); // 7,903,123,45,67
|
||
```
|
||
|