Изучаем регулярные выражения самостоятельно – квантификаторы повторений ( часть 3 )

Регулярные выражения — квантификаторы повторений

Продолжаем изучение регулярных выражений. В третьей части мы погорим о квантификаторах повторений.

С помощью квантификаторов повторений, указывается сколько раз подряд должно встречаться какой-то символ. Другими словами, указывается количество повторений какого-то символа.

Это может быть необходимо, например, в случае проверки номера телефона или в случае проверки номера банковской карточки, или в случае проверки введённого пользователем почтового индекса и во многих других случаях где присутствует повторение символов.

Существует несколько квантификаторов повторений и первого квантификатора которого мы изучим, это будет звёздочка (*).

Звёздочка в регулярных выражениях (*)

Квантификатор звёздочка означает 0 или больше количеств повторений.

Перед тем как привести пример, коротко расскажу об спец символе точка (.).

Точка означает абсолютно любой символ. То есть, если нужно указать в регулярном выражении что в какое-то место строки, может быть любой символ, то в регулярном выражении в соответствующее место пишем простую точку.

Например, мы хотим указать что между цифрами 1 и 9 может быть любой символ, и он может повторятся от 0 до бесконечности. В таком случае регулярное выражение будет выглядеть таким образом:

var reg = /1.*9/;
Проверяем:
var str = '1asdf874asd9';

var reg = /1.*9/;

alert(reg.test(str));// true

Результат проверки true. Если мы в конце строки уберём цифру 9, то результатом проверки будет false. Такой же результат будет если мы в начале строки уберём цифру 1.

0(ноль) повторений означает что между цифрами 1 и 9 может и не быть никакого символа.

var str = '19';

var reg = /1.*9/;

alert(reg.test(str));// true

Как видим, результат проверки также true. Это потому что через звёздочку мы указали что может быть и 0 повторений.

Со звёздочкой разобрались. Переходим к следующему квантификатору.

Плюс в регулярных выражениях

Квантификатор плюс означает одно или больше количеств повторений. То есть для того чтобы строка соответствовала регулярному выражению, должно быть хотя бы одно повторение указанного символа.

Например, если мы в предыдущем примере, вместо звёздочки поставим квантификатор плюс, то результатом проверки будет уже false.

var str = '19';

var reg = /1.+9/;

alert(reg.test(str));// false

Это потому что в строке между цифрами 1 и 9 нет не одного символа. Если мы между этими цифрами добавили хотя бы один, любой символ или больше, то результатом проверки был бы уже true.

var str = '1a9';

var reg = /1.+9/;

alert(reg.test(str));// true

Больше символов между цифрами:

var str = '1asdfffffffffffff9';

var reg = /1.+9/;

alert(reg.test(str));// true

С плюсом разобрались. Приступаем к следующему квантификатору.

Знак вопроса в регулярных выражениях ( ? )

Квантификатор знак вопроса означает 0 или одно повторение. То есть либо одно повторение, либо ни одного.

Возьмём один из предыдущих примеров и в регулярном выражении вместо знака плюс, напишем знак вопроса.

var str = '1a9';

var reg = /1.?9/;

alert(reg.test(str));// true

Как видим результатом проверки является true.

Этот же результат будет если между цифрами 1 и 9 не будет никакого символа.

var str = '19';

var reg = /1.?9/;

alert(reg.test(str));// true

А если между цифрами будет больше одного символа, то результатом проверки уже будет false.

var str = '1asdf9';

var reg = /1.?9/;

alert(reg.test(str));// false

Конкретное количество повторений

Бывают случаи, когда нужно проверить конкретное количество символов. Это конкретное количество пишется внутри фигурных скобок, сразу же после символа, которого нужно повторять.

Это можно использовать, например, при проверке номера банковской карточки. Мы знаем, что такой номер состоит ровно из 16 цифр. Поэтому в регулярном выражении нам нужно указать это конкретное количество цифр. И для того чтобы не писать 16 раз подряд символ класса ' \d ', вот так:

var reg = /^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/;

Мы можем воспользоваться квантификатором повторений и написать регулярное выражение таким образом:

var reg = /^\d{16}$/;

Вот так вот, указывается в регулярных выражениях конкретное количество повторений.

Минимальное количество повторений и больше

Для того чтобы указать минимальное количество повторений, в фигурных скобках пишем с начало цифру, которая указывает это минимальное количество, потом пишем запятую:

{минимальное_количество_повторений, }

Например, нам нужно написать такое регулярное выражение, где указать что введённый текст должен иметь длину, не меньше 50 символов.

//Введённый текст
var str = 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry.';

var reg = /.{50,}/;

alert(reg.test(str));// true

Результат проверки в этом примере равен true, но если в строке будет меньше 50 символов, то он будет уже false.

Интервал количеств повторений. От и до.

Также у нас есть возможность указать некий интервал повторений. Например, от 5 до 10 повторений. Для того чтобы указать этот интервал, внутри фигурных скобок пишем, с начало минимальное число повторений, потом через запятую, максимальное число повторений.

Например, нам нужно указать что минимальная длина введённого пароля должна быть 6 символов, а максимальная длина 32 символа.

Если длина введённого пароля будет меньше 6 символов, то пароль не будет соответствовать регулярному выражению. Тоже самое если его длина будет больше 32 символов.

//Введённый пароль
var str = 'pas';

var reg = /^.{6,32}$/;

alert(reg.test(str));// false

Как видим, результатом проверки равен false. Это потому что введённый пароль состоит только из трёх символов, а минимальная длина должна быть 6 символов.

И на этом я завершаю эту статью. Теперь Вы знаете что такое квантификаторы повторений, зачем они нужны и как их использовать.

Напомню, что в регулярных выражениях существуют такие квантификаторы:

  • * - повторение от 0 до бесконечности.
  • + - повторение от 1 до бесконечности.
  • ? - 0 или 1 повторение.
  • {5} — конкретное количество повторений.
  • {6,} - минимальное количество повторений и до бесконечности.
  • {6,32} — Интервал количеств повторений.

Как видите, квантификаторы повторений значительно сокращают регулярные выражения. Вы можете их использовать по необходимости в разных случаях.

Задачи

  1. Напишите регулярное выражение, которое проверяло бы длину введённого логина.
    • Максимальная длина логина 15 символов, а минимальная 3 символа.

Понравилась статья?

Тогда поделитесь ею с друзьями и подпишитесь на новые интересные статьи.

Поделиться с друзьями:

Подписаться на новые статьи:

Delivered by FeedBurner

Поддержите пожалуйста мой проект!

<< Предыдущая статьяСледующая статья >>

Если у Вас есть какие-то вопросы или предложения, то можете писать их в комментариях или мне на почту sergiu920@mail.ru. И если Вы заметили какую-то ошибку в статье, то прошу Вас, сообщите мне об этом, и в ближайшее время я всё исправлю.

Добавляйтесь ко мне в друзья в:

Добавляйтесь в мои группы:

Подпишитесь на мои каналы:

Автор статьи: Мунтян Сергей

Копирование материалов с сайта sozdatisite.ru ЗАПРЕЩЕНО!!!

Дата добавления: 2016-12-27 08:31:40