muzruno.com

PHP (регулярен израз) - какво е това? Примери и проверка на регулярните изрази

При работа с текст във всеки модерен език за програмиране, разработчиците постоянно се срещат с целите на въвеждане на валидиране за спазване на желания шаблон, търсене и замяна на изпитване фрагменти и други видове операции по обработката на информация характер. Разработване на собствени алгоритми за валидиране води до загуба на време, код съвместимостта и сложност в неговото развитие и модернизация на.

Бързото развитие на интернет и езиците на WEB-развитие изисква създаването на универсални и компактни текстообработващи устройства с минимално количество кодове, необходими за това. PHP езикът не е изключение и е популярен сред начинаещите и професионалните разработчици. Редовият израз като език на текстовите шаблони ви позволява да опростите задачата за текстообработка и да намалите програмния код на десетки и стотици линии. Много задачи не могат да бъдат решени без него.

php регулярен израз

Редовни изрази в PHP

PHP език има три механизма за работа с регулярни изрази - «ereg», «mb_ereg» и «прег». Най-често е интерфейс «прег», чиито функции осигуряват достъп до библиотеката на регулярен израз подкрепата на PCRE, първоначално разработена за езика Perl, който е включен в пакета на PHP. Предварителните функции се търсят в даден текстов низ от мачове, според определен шаблон на езика на регулярните изрази.

Основи на синтаксиса

примери за регулярните изрази

В рамките на една кратка статия не е възможно да се опише подробно целия синтаксис на регулярните изрази, затова има специална литература. Тук са само основните елементи за показване на широк спектър от възможности за разработчика и разбиране на примерни кодове.

В PHP регулярният израз формално се определя много трудно и затова опростяваме описанието. Регулиран израз е текстов низ. Състои се от ограничен шаблон и модификатор, който показва как да се справя с него. Възможно е да се включат различни алтернативи и повторения в шаблоните.

Например, в израз / d {3} - d {2} - d {2} / m разделителят ще бъде "/", тогава шаблонът върви и символът «М» ще бъде модификатор.

Цялата сила на регулярните изрази е кодирана с метахарактери. Основният метасъразмер на езика е обратната наклонена черта - "". Той променя типа на символа, следващ него, на другия (т.е. обикновеният характер се превръща в метахарактер и обратно). Друг важен метахакарток е директната линия "|", която определя алтернативни варианти на шаблона. Още примери за метачараци:

^Започване на обект или низ
(Начало на подпартинга
)Край на подпартинга
{Произход на количественото число
}Край на количественото число
dдесетична цифра от 0 до 9
Dвсеки знак, който не е цифра
sпразен знак, интервал, раздел
wречник характер

PHP, обработвайки регулярни изрази, счита, че пространството е отделен значителен символ, така че изразите ABCDEF и ABC WHERE са различни.

част от невидимия

В PHP редовните подпартименти се разпределят в скоби и понякога се наричат ​​"subexpressions". Изпълнете следните функции:

  1. Разпределяне на алтернативи. Например, треска (нещо | Bird |) съвпада с думите "Heat", "firebird" и «Гореща». И без скоби това ще бъде само празен низ, "птица" и "печено".

  2. "Вълнуващ" подпартимент. Това означава, че ако подразделът съвпадне в шаблона, тогава всички съвпадения се връщат като резултат. За по-голяма яснота даваме пример. Представен е следният регулярен израз: победителят получава ((златен | позлатен) (медал | чаша)) - и низ за търсене на мачове: "Победителят получи златен медал". В допълнение към първоначалната фраза резултатът от търсенето ще бъде: "Златен медал", "Медал", "злато".

Оператори на повторения (квадрифьори)

При създаването на регулярни изрази често е необходимо да се анализира повторението на числата и символите. Това не е проблем, ако няма твърде много повторения. Ами ако не знаем точния им брой? В този случай трябва да използвате специални метамаркери.

За описанието на повторенията се използват quadrics - metacharacters за уточняване на числото. Квадрите са два вида:

  • общо, оградено в скоби;
  • намалена.

Общият количествен израз се докосва от минималния и максималния брой разрешени повторения на елемента под формата на две числа в скосени скоби, например: х {2,5}. Ако максималният брой повтаряния не е известен, вторият аргумент не е посочен: x {2,}.

Намалените количествени показатели са символи за най-често срещаните повторения, за да се избегне ненужно претоварване на синтаксиса. Обикновено се използват три съкращения:

1. * - нула и повече повторения, което е равно на {0,}.

2. + едно или повече повторения, т.е. {1,}.

3.? - нула или само едно повторение - {0,1}.

Примери за регулярни изрази

За тези, които изучават регулярни изрази, примерите са най-добрият учебник. Ще дадем няколко, които показват най-големи възможности с минимални усилия. Всички програмни кодове са напълно съвместими с PHP 4.x и по-нови версии. За да се разбере напълно синтаксиса и използването на всички езикови особености, които препоръчваме книгата на J .. Фридл, "регулярни изрази", което напълно се счита синтаксис, а има и примери за тези изрази не само PHP, но също така и за Python, Perl, MySQL, Java, Ruby, и C #.

Проверка на верността на адреса на електронната поща

Задачата. Има интернет страница, от която се изисква имейл адрес от посетителя. Регулярният израз трябва да провери правилността на получения адрес, преди да изпрати съобщения. Проверката не гарантира, че определената пощенска кутия наистина съществува и приема писма. Но е възможно да се премахнат умишлено грешни адреси.

Решението. Както на всеки език за програмиране, регулярните изрази на потвърждение на имейл адресите в PHP могат да се изпълняват в PHP по различни начини, а примерите в тази статия не са окончателната и единствена опция. Ето защо във всеки случай ще изброим изискванията, които трябва да бъдат взети предвид при програмирането, а конкретното изпълнение зависи изцяло от разработчика.

Така че изразът, проверяващ валидността на имейла, трябва да провери следните условия:

  1. Присъствието на символа @ в изходния низ и липсата на интервали.
  2. Домейнът на адреса, извън символа @, съдържа само валидни знаци за имена на домейни. Същото важи и за потребителското име.
  3. Когато проверявате потребителското име, трябва да определите дали съществуват специални символи, като апостроф или вертикална линия. Такива символи са потенциално опасни и могат да се съдържат в атаки като SQL инжекции. Избягвайте тези адреси.
  4. Потребителските имена позволяват само една точка, която не може да бъде първият или последният знак в низа.
  5. Името на домейна трябва да съдържа поне два и не повече от шест знака.

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

php имейли с регулярни изрази

Удостоверяващи URL адреси

Задачата. Проверете дали посоченият текстов низ е валиден адрес URL. Още веднъж, обикновените изрази на URL адреси могат да бъдат изпълнени по различни начини.

Решението. Нашата окончателна версия е, както следва:



/^(https?://)?([da-z.-]+).([az.]{2,6})([/w .-] *) * /? $ /

Сега нека анализираме компонентите му по-подробно, използвайки фигурата.

регулярни изрази url

точка 1Преди URL адресът не може да бъде какъвто и да е символ
точка 2Проверяваме за задължителния префикс "http"
т. 3Не трябва да съдържа никакви знаци
точка 4Ако има "s", то URL адресът сочи към защитена връзка "https"
точка 5Изисквано "//"
точка 6Няма знаци
точка 7-9утвърждаване домейн от първо ниво и наличието на точка
p.10-13Контрол на точността на писане на домейн и точка от второ ниво
Точка 14-17

Структурата на URL адреса е набор от номера, букви, долни черти, тирета, точки и наклонени черти в края

Проверка на номерата на кредитни карти

Задачата. Необходимо е да се провери точността на въведения номер на пластмасовата карта на най-често използваните платежни системи. Един вариант се разглежда само за картите Visa и MasterCard.

Решението. Когато създавате израз, трябва да вземете предвид възможното присъствие на интервали в въведения номер. Числата на картата са разделени на групи за лесно четене и диктовка. Следователно, съвсем естествено е, че човек може да се опита да въведе номер по този начин (т.е. използвайки пространства).

Напишете универсален израз, който взема под внимание възможните интервали и тирета, е по-трудно, отколкото просто отпадането на всички знаци, с изключение на цифрите. Следователно, в израза се препоръчва да използвате / D metacharacter, който изтрива всички знаци с изключение на цифрите.

Сега можете да отидете директно до потвърждаването на номера. Всички компании, които издават кредитни карти, използват уникален формат на числата. В примера това се използва и клиентът не трябва да въвежда името на компанията - това се определя от номера. Визовите карти винаги започват с 4 и имат дължина от 13 или 16 цифри. MasterCard започва в диапазона 51-55 с дължината на числото 16. В резултат на това получаваме следния израз:

Преди обработката на поръчката можете да извършите допълнителна проверка на последната цифра на номера, която се изчислява по алгоритъма на Луната.

Проверка на телефонни номера

Задачата. Проверка на верността на въведения телефонен номер.

Решението. Броят на цифрите в номерата на фиксираните и мобилните телефони се различава значително в зависимост от страната, така че е универсално да проверявате, като използвате регулярен израз, телефонният номер не може да бъде правилен. Но международните номера имат строг формат и са отлични за проверка по шаблон. Освен това, все повече и повече национални телефонни оператори се опитват да се съобразят с един стандарт. Номерната структура е, както следва:

+CCC.NNNNNNNNNNxEEEE, когато:

- C е код на държавата, състоящ се от 1-3 цифри.

- N - брой до 14 цифри.

- E е допълнително разширение.

Плюс е незаменим елемент, а знакът на х е налице само ако е необходимо разширяване.

В резултат на това имаме следния израз:

[0-9] {1, 3} [0-9] {4,14} (a: x +

Числа в диапазона

Задачата. Необходимо е да се гарантира, че цялото число съответства на определен диапазон. Освен това е необходимо регулярните изрази да се намерят само от диапазона от стойности.

Решението. Ето някои изрази за няколко от най-често срещаните случаи:

Определете часа от 1 до 24^ (1 [0-2] | [1-9]) $
Ден в месеца 1-31^ (3 [01] | [12] [0-9] | [1-9]) $
Втората или минута 0-59^ [1-5] [0-9] $
Номер от 1 до 100^ (100 | [1-9] а [0-9]) $
Ден на годината 1-366[0-9] | [12] [0-9] {2} | [1-9] [0-9] |) $

Търсене на IP адрес

Задачата. Трябва да определите дали посоченият низ е валиден IP адрес във формат IPv4 в диапазона от 000.000.000.000-255.255.255.255.

Решението. Както във всяка задача в PHP, регулярният израз има много варианти. Например това:

пространство за регулярно изразяване

Онлайн тест на изразите

имейл регулярен израз

Проверката на правилните изрази за коректност за начинаещите програмисти може да бъде трудна поради сложността на синтаксиса, различен от "нормалните" програмни езици. За да разрешите този проблем, има много тестери за онлайн изрази, които ви позволяват лесно да проверите правилността на създадения шаблон на реален текст. Програмистът въвежда израза и данни за проверка и веднага вижда резултата от обработката. Обикновено има и референтна секция, в която са описани в подробности обикновени изрази, примери и разлики в изпълнението за най-често срещаните програмни езици.

Но пълното доверие на резултатите от онлайн услугите не се препоръчва за всички разработчици, които използват PHP. Правилен израз, писмен и проверен лично, повишава квалификацията и гарантира липсата на грешки.

Споделяне в социалните мрежи:

сроден