Изучаем регулярные выражения самостоятельно – часть 1

Регулярные выражения - якоря

В этой статье мы начнём разбирать такую тему как регулярные выражения. Данная тема довольно-таки сложна для понимания, поэтому я постараюсь всё подробно объяснить на реальных примерах, чтобы Вам было максимально понятно, что да как.

Регулярное выражение — это некая строка-образец, которая является правилом проверки какой-то строки на соответствие какого-то формата.

Например, с помощью регулярного выражения мы можем проверить, правильно ли ввёл пользователь свой адрес почтового ящика при заполнении формы регистрации или авторизации. Мы устанавливаем правило проверки формата адреса почтового ящика, и если введённый почтовый адрес соответствует данному правилу, то пользователь проходит регистрацию, в противном случае он получит ошибку о том, что E-mail введён не верно.

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

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

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

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

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

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

функции которые используются для проверки регулярных выражений

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

Например, в JavaScript для проверки регулярных выражений можно использовать метод test(). Данный метод возвращает просто true, если строка соответствует регулярному выражению и false если она не соответствует.

Также для проверки можно использовать метод match(). Он уже возвращает массив с найденными совпадениями (конкретные подстроки), если строка соответствует регулярному выражению, и null если строка не соответствует.

Возвращённый массив может содержать только один элемент или больше элементов, в зависимости от того указан ли флаг глобального поиска "g" в конце регулярного выражения или нет. Если этот флаг указан и в строке будут найдены больше чем одно совпадение, то в массиве будут больше одного элемента, в противном случае он будет содержать только первое найденное совпадение.

А в PHP для работы с регулярными выражениями используется функция preg_match(). Данная функция также возвращает true или false.

Общий принцип составления регулярных выражений в обоих языках одинаков. Только в JavaScript используются одни функции, а в PHP другие функции. Большинство примеров я буду показывать на языке JavaScript.

Составление регулярных выражений

Регулярное выражение пишется между двумя одинаковыми специальными символами. Обычно используется символ слэш (/), но иногда встречается и другие спец символы, такие как например решётка (#).

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

Синтаксис метода test() следующий:

var result = регулярное_выражение.test(); 

Для начала объявим некую переменную str, в которую поместим какую-то строку. Потом, объявим простое регулярное выражение, которому должно соответствовать данная строка. Если строка соответствует данному регулярному выражению, то функция вернёт true, иначе false.

//Строка, которую будем проверять на соответствие
var str = "Programmers are in higher demand today than ever before";

//Регулярное выражение - правило для проверки
var reg = /dsa/;

//Проверяем соответствует ли строка регулярному выражению и выводим результат
alert(reg.test(str)); //Результат: false

В данном случае результатом проверки будет false, потому что комбинация букв 'dsa' в строке из переменной str не найдена.

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

Если мы поменяем значение переменной reg с /dsa/ на /are/, например, то результатом проверки будет уже true, так как в строке есть такое слово 'are'.

Внимание! Достаточно чтобы лишь часть строки соответствовало регулярному выражению, и вся строка считается соответствующей данному регулярному выражению.

Использования PHP функции preg_match()

Напишем тот же пример, но уже на языке PHP.

В этом примере Вы должны понять как работать с функцией preg_match(). В первом параметре передаётся регулярное выражение, а во втором строка, которую хотим проверить на соответствие.

<?php
    //Строка, которую будем проверять на соответствие
    $str = "Programmers are in higher demand today than ever before";

    //Регулярное выражение - правило для проверки
    $reg = /are/;

    //Проверяем соответствует ли строка регулярному выражению и выводим результат
    echo "Результат проверки: ".preg_match($reg, $str); //Результат: 1
?>

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

Якоря

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

Чаще всего используются следующие якоря:

  • ^ - Указывает на начало строки.
  • $ - указывает на конец строки

Якорь ^

Для того чтобы указать в регулярные выражения начало строки используется якорь ^.

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

//Строка, которую будем проверять на соответствие
var str = "Programmers are in higher demand today than ever before";

//Регулярное выражение - правило для проверки
var reg = /^Programmers/;

//Проверяем соответствует ли строка регулярному выражению и выводим результат
alert(reg.test(str)); //Результат: true

Мы указали что строка должна начинаться со слова 'Programmers'. Если мы добавим в начало строки какой-то символ, то она уже не будет соответствовать данному регулярному выражению.

//Строка, которую будем проверять на соответствие
var str = "Programmers are in higher demand today than ever before";

//Регулярное выражение - правило для проверки
var reg = /^PProgrammers/;

//Проверяем соответствует ли строка регулярному выражению и выводим результат
alert(reg.test(str)); //Результат: false

В результате проверки мы получили false потому что строка должна начинаться со слова 'Programmers' а не с 'PProgrammers'.

Результат также будет false если мы добавим какой-то лишний символ в само слово 'Programmers' из строки. Например, строка которая начинается со слова 'Programkmers' уже не является соответствующей.

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

С первым якорем разобрались. Теперь перейдём к следующему.

Якорь $

Для того чтобы указать в регулярные выражения конец строки используется якорь, который имеет символ доллара ($).

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

Например:

//Строка, которую будем проверять на соответствие
var str = "Programmers are in higher demand today than ever before";

//Регулярное выражение - правило для проверки
var reg = /Programmers$/;

//Проверяем соответствует ли строка регулярному выражению и выводим результат
alert(reg.test(str)); //Результат: false

Результатом данной проверки является false потому что строка не заканчивается после слова 'Programmers'. Для того чтобы она соответствовала нужно убрать все после этого слова.

//Строка, которую будем проверять на соответствие
var str = "Programmers";

//Регулярное выражение - правило для проверки
var reg = /Programmers$/;

//Проверяем соответствует ли строка регулярному выражению и выводим результат
alert(reg.test(str)); //Результат: true

А если мы укажем оба якоря в регулярное выражение, то строка будет соответствовать только тогда, когда будет в точности как в регулярном выражении.

//Строка, которую будем проверять на соответствие
var str = "Programmers are in";

//Регулярное выражение - правило для проверки
var reg = /^Programmers are in$/;

//Проверяем соответствует ли строка регулярному выражению и выводим результат
alert(reg.test(str)); //Результат: true

Если мы добавим любой символ в строку, то результатом проверки будет false.

Что касается остальных якорей из справочника, то они используются очень, очень редко. Я их точно никогда не использовал.

Ну и на этом, пожалуй, закончим данную статью чтобы она не получилась слишком длинной.

В этой статье Вы узнали о регулярных выражениях, как их составить и для чего они используются. А также познакомились с главными якорями, которые указывают начало строки (^) и конец строки ($).

Задачи

  1. Возьмите какую-то строку, например, 'Lorem Ipsum is simply dummy text' и пишите регулярное выражения для её соответствия.
  2. Поставьте в начало регулярного выражения якорь ^. Проверьте, соответствует ли выбранная строка такому выражению. Поставьте какой-то символ в начале строки и опять проверьте.
  3. Поставьте в конец регулярного выражения якорь $. И также проверьте строку на соответствие.

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

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

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

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

Delivered by FeedBurner

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

<< Предыдущая статья

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

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

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

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

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

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

Дата добавления: 2016-11-29 01:25:19