Квантификаторы регулярных выражений

Квантификаторы регулярных выражений

Здравствуйте! В этом уроке в продолжении темы регулярных выражений  мы с вами рассмотрим  квантификаторы или повотрители в регулярных выражениях.  На прошлом уроке  мы разбирались с диапозонами в регулярных выражениях.   И вот эта тема квантификаторы в регулярных выражениях  как бы идет в продолжении   темы  диапазоны в регулярных выражениях.  Но давайте  как и всегда начнем с примера   – допустим есть  телефон  +38(096)-123-45-67 и  надо найти все числа в нём. То есть  нас интересуют не числа по отдельности, а именно числа, 38, 096, 123, 45, 67.

Если для поиска цифр по отдельности  было достаточно класса \d. То здесь нужно искать числа – последовательности из 1 или более цифр. То есть искать повторяющиеся цифры.

 

квантификаторы в регулярных выражениях

Количество повторений {n}

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

Такое указание как раз  и называют  называют квантификатором (от англ. quantifier) или повторителем

Рассмотри примеры:

Если надо задать точное количество: {5}
Регулярка \d{5} означает  ровно 3 цифры, все равно, что  \d\d\d.Следующий пример находит трехзначное число.

alert( "Мне 123 лет".match(/\d{3}/) ); //  "123"
Если надо задать диапозон повтрений от-до: {2,5}Например, если надо найти числа размером от 2 до 5 знаков, то следует задать границы диапозона в фигурных скобках: \d{3,5}

alert( "Мне не 1, а 1234 года".match(/\d{2,5}/) ); // "1234"

А вот если последнее значение не указывать вообще. То тогда выражение \d{3,} будет находить все числа, длиной от трех цифр и более:

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

Возвращаясь к нашему примеру с телефоном нам нужны числа, которые идут подряд. Для этой задаче подойдет следующий регэсп \d{1,}:

var str = "+38(096)123-45-67";
alert( str.match(/\d{1,}/g) ); // 38,096,123,45,67

Короткие обозначения в квантификаторах

Для часто востребованных повторителей есть специальные короткие обозначения.

+
Означает «один или более», то же самое  что {1,}. Пример:

var str = "+38(096)123-45-67";
alert( str.match(/\d+/g) ); // 38,096,123,45,67

?Означает «ноль или один», равносильно {0,1}. Пример:

var str = "Можно писать color или colour";
alert( str.match(/colou?r/g) ); // color, colour

*Означает «ноль или более», аналогично {0,}. Пример:

alert( "1000 10 1".match(/\d0*/g) ); // 100, 10, 1

И еще несколько примеров.

Регулярка «десятичная дробь» (число с точкой внутри): \d+\.\d+
Пример:

alert( "0 1 12.346 7890".match(/\d+\.\d+/g) ); // 12.346

Регулярка «открывающий HTML-тег без атрибутов», такой как <div> или <a>: /<[a-z]+>/iПример:

alert( "<pre> ... </pre>".match(/<[a-z]+>/gi) ); // <pre>

А вот это регулярное выражение ищет символ ‘<‘, за которым будет следовать одна или более букв английского алфавита, и затем ‘>’.Регулярка «открывающий HTML-тег»: /<[a-z][a-z0-9]*>/i

alert( "<h2>Привет!</h2>".match(/<[a-z][a-z0-9]*>/gi) ); //<h2>

Регулярка «открывающий или закрывающий HTML-тег без атрибутов»: /<\/?[a-z][a-z0-9]*>/i

alert( "<h2>Привет!</h2>".match(/<\/?[a-z][a-z0-9]*>/gi) ); // <h2>, </h2>

Итоги.

Для того чтобы задать повторения символов используются квантификаторы. Например {n}.

Читайте также  Многострочный режим, флаг "m" в регулярных выражениях

Квантификатор «+» — задает  от 1 и более повторений

Квантификатор «*» — задает от 0 и более повторений.

Квантификатор «?» задает от 0 до 1 повторений.

Задачи

Как найти многоточие… ?

Напишите регулярное выражения для поиска многоточия: 3 или более точек подряд.Проверьте его:

var reg1 = /ваше выражение/g;
alert( "Здравствуйте!... Как дела?.....".match(reg1) ); // ..., .....

Регулярное для поиска цвета

Вам надо написать регулярку для поиска HTML-цвета, в формате #ABCDEF, то есть # и содержит затем 6 шестнадцатеричных символов.Пример использования:

var re = /*...ваше регулярное выражение...*/
var str = "color:#121213; background-color:#AA00ef bad-colors:f#fddee #fd2"
alert( str.match(re) )  // #121213,#AA00ef

Найдите десятичные числа.

Напишите регулярное выражение для поиска  тоько десятичных чисел, только чисел с  плвающей точкой.

 

var reg1 = /ваше выражение/g;
alert( "1 1.2 2".match(reg1) ); // ..., .....

 

Смотрите видеоурок по квантификаторам регулярных выражений.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Плюсануть
Поделиться

Об авторе

admin administrator

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: