Оглавление

Несколько практических примеров

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


Почтовый индекс
Имеется почтовый индекс заказчика, который находит ся в переменной $zip, и нужно убедиться, что он введен в правильном формате. Почтовый индекс Соединенных Штатов состоит из пяти цифр и опционально сопровождается дефисом с четырьмя цифрами после него. Выражение ниже проверяет почтовый индекс на соответствие этому формату:

if (ereg("^[[:digit:]]{5}(-[[:digit:]]{4})+{2,3}?$", $zip)) ...


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

 

Даже если второй части выражения нет, знак $ указывает на окончание строки. Таким образом, чтобы условие выполнилось, после указанных выражений не должно быть никаких символов. Поэтому такое выражение вернет истинное значение, если на вход подать почтовый индекс в виде 90210 или 90210-1234.


Телефонные номера
Предположим, нужно убедиться в том, что телефонный номер задан в формате (555)555-5555. В нем нет необязательных частей. Но круглые скобки имеют специальное значение для регулярных выражений. Поэтому их нужно разделить обратной косой чертой.


Следующее выражение проверяет соответствие этому формату:

if (ereg("^\([[:digit:]]{3}\)[[:digit:]]{3}-
[[:digit:]]{4}$",
$telophone)) ...

 

 

Email адрес
Нужно учитывать много различных параметров при проверке электронных адресов. В самом простом случае почтовый адрес для домена  .com   выглядит   как   somename@somedomain.com.
Нo может быть много вариаций.  Например,  домены верхнего уровня могут быть из двух символов, как в  .са, или  даже из четырех, как  .info.  Некоторые специфические домены стран состоят из двух частей, как .co.uk или .com.au.

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

 
Адpec состоит из двух важных частей, которые разделяются символом @. Символы слева от знака @, составляют название почтового ящика адресата. Они могут быть буквенно-цифровыми и включать несколько других символов.

 

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

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

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

 
Учитывая   все   приведенные   выше   условия,   получаем следующее регулярное выражение для проверки электронного адреса:

if (ereg("^[^@]+@([а-z0-9\-]+\.)+[a-z]{2,4}$", $email)) ...


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

 

Когда остановиться?
Это выражение можно улучшить. Например, имя домена не может начинаться с дефиса и должно быть не больше 63 символов в длину. Но для проверки электронных адресов этого выражения вполне достаточно.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити