en.javascript.info/03-more/08-regular-expressions-javascript/06-regexp-numeric-quantifiers/article.md
Ilya Kantor f301cb744d init
2014-10-26 22:10:13 +03:00

2 KiB
Raw Blame History

Цифровые квантификаторы {n}

Рассмотрим задачу -- взять телефон вида +7(903)-123-45-67 и найти все числа в нём. То есть, нас интересует результат вида 7, 903, 123, 45, 67.

Нечто похожее мы уже делали ранее -- мы искали цифры. Для этого было достаточно класса \d. Но здесь нужно искать числа -- последовательности из 1 или более цифр.

Количество повторений символа можно указать с помощью числа в фигурных скобках: {n}.

Точное количество: `{5}`
Паттерн \d{5} обозначает 5 цифр, как и Следующий пример находит пятизначное число.

//+ run
alert( "Мне 12345 лет".match (/\d{5}/) );  //  "12345"
Количество от-до: `{3,5}`
Для того, чтобы найти, например, числа размером от трёх до пяти знаков, нужно указать границы в фигурных скобках: `\d{3,5}`
//+ run
alert( "Мне не 12, а 1234 года".match( /\d{3,5}/ ) );  // "1234"

Последнее значение можно и не указывать. Тогда выражение \d{3,} найдет числа, длиной от трех знаков:

//+ run
alert( "Мне не 12, а 345678 лет".match( /\d{3,5}/ ) );  // "345678"

В случае с телефоном нам нужны числа - одна или более цифр подряд. Этой задаче соответствует регулярное выражение \d{1,}:

//+ run
var str = "+7(903)-123-45-67";

alert( str.match( /\d{1,}/g ) ); // 7,903,123,45,67