ПХП (регуларни израз) - шта је то? Примјери и провјера регуларних израза

Рачунари

Када радите са текстовима на било ком савременом језикупрограмери програмирања се стално суочавају са задацима проверавања унетих података за усклађивање са жељеном шемом, проналажење и замену тестних фрагмената и других типичних операција за обраду симболичких информација. Развој сопствених алгоритама верификације води до губитка времена, некомпатибилности програмског кода и потешкоћа у његовом развоју и модернизацији.

Брзи развој Интернета и језика ВЕБ-развојзахтевала је стварање универзалних и компактних средстава за обраду текућих информација са минималном количином кода потребног за ово. ПХП није изузетак и популаран међу почетницима и професионалним програмерима. Редовни израз као језик текстуалних образаца омогућава вам да поједноставите задатке обраде ријечи и смањите програмски код десетинама и стотинама линија. Многи проблеми се не могу ријешити без њега.

пхп регулар екпрессион

ПХП регуларни изрази

Језик ПХП садржи три механизма за радРегуларни изрази су "ерег", "мб_ерег" и "прег". Најчешћи је интерфејс "прег", чије функције омогућавају приступ књижници подршке за регуларни израз ПЦРЕ, оригинално развијен за Перл, који је укључен у ПХП пакет. Прег-функције се претражују у датом текстуалном низу за утакмицу, према специфичном образцу на језику регуларних израза.

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

примјери регуларних израза

У кратком чланку немогуће је детаљно описатиопишите читаву синтаксу регуларних израза, јер постоји посебна литература. Представљамо само основне елементе за приказивање широких могућности за програмера и за разумевање примера кодова.

У ПХП-у, регуларни израз је формално дефинисанврло тешко, и самим тим поједностављује опис. Редовни израз је текстовни низ. Састоји се од ограниченог шаблона и модификатора који указује на то како да се носи са њим. Можда укључивање у образац различитих алтернатива и понављања.

На пример, у изразу / д {3} -д {2} -д {2} / м раздвајач ће бити "/"слиједи шаблон, и симбол "М" ће бити модификатор.

Сва снага регуларних израза је кодиранакористећи мета-карактере. Главни метакарактер језика је "" цртеж са пошиљаком "". Он мења тип карактера који следи на супротно (тј. Обичан карактер претвара у метачарактер и обрнуто). Други значајан метацхарацтер је форвард бар "|", који дефинише алтернативне варијанте узорка. Још примера метакарактера:

^Почетак објекта или линије
(Почетак под-шаблона
)Под-образац крај
{Почетни квантификатор
}Квантификатор заврши
ддецимална цифра од 0 до 9
Дбило који непознати знак
спразан знак, размак, таб
ввоцабулари симбол

Приликом обраде регуларних израза, ПХП третира простор као посебан значајан карактер, стога су изрази АБВГДЕ и АБЦ ВХЕРЕ различити.

Под-образци

У ПХП-у, регуларне субпаттернс су означене са заградама и понекад се називају "подизразитима". Обавите следеће функције:

  1. Ослањање алтернатива. На пример, шаблон топлота (неки | птица |) одговарају ријечи "Хеат", "фиребирд" и "Хот". И без заграда, то ће бити само празна жица, "птица" и "печење".

  2. "Фасцинантан" под-образац. То значи да ако се образац подудара са поднизом, онда се сви резултатови враћају као резултат. За јасноћу, дамо пример. С обзиром на следећи регуларни израз: победник добија ((злато | позлаћени) (медаља | шоља)) - и стринг за проналажење утакмица: "Победник добија златну медаљу". Поред изворне фразе, резултат претраживања ће се издати: "Златна медаља", "Медаља", "злато".

Репеат оператори (квадрифери)

Приликом писања регуларних израза веома честонеопходно је анализирати понављање бројева и симбола. Ово није проблем ако нема много понављања. Али шта да радимо када не знамо њихов тачан број? У том случају, морате користити посебне метакарактерије.

За опис понављања користе се квадрифери - мета-карактери за одређивање броја. Постоје две врсте квалификатора:

  • заједнички заграде;
  • скраћено

Општи квантификатор додирује минимум имаксимални број допуштених понављања елемента у облику два броја у коврџастим заградама, на пример: к {2.5}. Ако је максималан број понављања непознат, други аргумент није наведен: к {2,}.

Скраћени квантификатори су симболи за најчешћа понављања како би се избјегло непотребно преоптерећење синтаксе. Уобичајено се користе три скраћенице:

1. * - нула и више понављања, што је еквивалентно {0,}.

2. + - једно или више понављања, тј. {1,}.

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

Редовни изрази експресије

За оне који проучавају регуларне изразе,примери су најбољи туториал. Ми ћемо навести неколико који показују своје широке могућности с минималним напором. Сви софтверски кодови су у потпуности компатибилни са верзијама ПХП 4.к и новијим. За потпуну разумијевање синтаксе и кориштење свих карактеристика језика препоручујемо књигу Ј. Фриедл "Регулар екпрессионс", гдје се синтакса у потпуности разматра и постоје примјери регуларних израза не само у ПХП-у, већ и за Питхон, Перл, МиСКЛ, Јава, Руби и Ц #.

Провера валидације е-поште

Задатак. Постоји веб страница гдјеПосетиоцу се тражи адреса е-поште. Редовни израз мора верификовати исправност примљене адресе пре слања порука. Провера не гарантује да одређено поштанско сандуче стварно постоји и прихвата слова. Али можемо елиминисати очигледно погрешне адресе.

Решење. Као и сваки програмски језик у ПХП-уРедовни изрази за верификацију адресе е-поште могу се имплементирати на различите начине, а примјери у овом чланку нису коначна и једина опција. Због тога ћемо у сваком случају обезбедити списак захтева који треба узети у обзир приликом програмирања, а специфична имплементација је потпуно зависна од програмера.

Дакле, израз који проверава ваљаност е-поште треба да провери следеће услове:

  1. Присуство у оригиналној линији симбола @ и одсуство размака.
  2. Доменски део адресе, након симбола @, садржи само важеће вриједности за имена домена. Исто важи и за корисничко име.
  3. Када проверавате корисничко име је неопходноодређује присуство специјалних знакова, као што је апостроф или вертикална трака. Такви карактери су потенцијално опасни и могу се наћи у таквим нападима као што су ињекције СКЛ-а. Избегавајте такве адресе.
  4. Корисничка имена дозвољавају само једну тачку, која не може бити први или последњи карактер у низу.
  5. Име домена мора садржавати најмање два и не више од шест знакова.

Пример који узима у обзир све наведене услове може се видети на слици испод.

пхп регуларни изрази е-поште

Потврдите УРЛ адресе

Задатак. Проверите да ли је наведен низ текста важећи УРЛ. Још једном, примећујемо да редовни изрази за провјеру УРЛ-а могу бити имплементирани на различите начине.

Решење. Наша финална верзија изгледа овако:

/^(хттпс?://)?([да-з.-[+).([а-з. Паге (2,6) [] / [/ в .-] *) * /? $ /

Сада ћемо детаљније анализирати његове компоненте користећи слику.

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

стр.1Не мора бити знакова испред УРЛ-а
п.2Проверавамо присуство обавезног префикса "хттп"
стр.3Не би требао бити карактера
стр.4Ако је "с" присутан, тада УРЛ означава сигурну везу "хттпс"
стр.5Тражени фрагмент "//"
стр.6Нема знакова
стр. 7-9Валидација домена првог нивоа и присуства тачке
стр.10-13Контрола правописа домена и тачке другог нивоа
стр. 14-17

Структура УРЛ датотеке - скуп бројева, слова, подвучица, цртица, периода и цртица на крају

Проверите бројеве кредитних картица

Задатак. Неопходно је провести верификацију исправности уписаног броја пластичне картице најчешћих платних система. Сматра се опција само за Виса и МастерЦард.

Решење. Приликом стварања израза, потребно је размотритимогуће присуство простора у унесеном броју. Бројеви на картици су подељени у групе ради лакшег читања и диктирања. Стога је природно да особа покуша да унесе број на овај начин (то јест, користећи размаке).

Напишите универзални израз који узима у обзирмогући размаци и цртице су теже него што се одвајају сви знакови осим цифара. Због тога се препоручује израз за кориштење метацхарацтер / Д, који уклања све знакове осим бројева.

Сада можете ићи директнопровера бројева. Све компаније за кредитне картице користе јединствени формат броја. У примјеру се користи и клијент не мора уносити име компаније - то је одређено бројем. Картице Виса увек почињу са 4 и имају дужину од 13 или 16 цифара. МастерЦард почиње у опсегу 51-55 са дужином од 16. Као резултат, добијамо следећи израз:

примјери регуларних израза

Прије обраде налога, можете провести додатну провјеру последње цифре броја, који се израчунава помоћу алгоритма Моон.

Провера бројева телефона

Задатак. Проверите исправност унетог броја телефона.

Решење. Број бројева у фиксном и мобилном телефонутелефонски бројеви се знатно разликују по земљама, тако да није могуће универзално верификовати исправност телефонског броја користећи регуларне изразе. Међутим, међународни бројеви имају строг формат и одлични су за проверу шаблона. Штавише, све више и више националних телефонских оператора покушава да се усклади са једним стандардом. Структура броја је следећа:

+ ЦЦЦ.ННННННННННкЕЕЕЕ, где:

- Ц је шифра државе која се састоји од 1-3 цифре.

- Н - број до 14 цифара.

- Е - опционално продужење.

Плус је потребан елемент, а к је присутан само када је потребно проширење.

Као резултат, имамо следећи израз:

^ + [0-9] {1,3}. [0-9] {4,14} (?: Кс. +)? $

Бројеви у опсегу

Задатак. Неопходно је осигурати да се цијели број из одређеног опсега поклапа. Поред тога, морате пронаћи редовне изразе само бројеве из опсега вредности.

Одлука. Ево неких израза за неколико уобичајених случајева:

Одредите сат од 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^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} | [1-9] [0-9]?)

Претраживање ИП адреса

Задатак. Неопходно је одредити да ли је специфицирани стринг важећа ИПв4 ИП адреса у распону од 000.000.000.000-255.255.255.255.

Решење. Као и код било којег проблема у ПХП-у, регуларни израз има много варијација. На пример:

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

Онлине провјера израза

регуларни израз е-поште

Проверите регуларне изразе за исправностПочетни програмери могу бити тешки због сложености синтаксе која се разликује од "обичних" програмских језика. Да бисте ријешили овај проблем, постоје многи онлине тестери израза који вам омогућују да лако провјерите исправност креираног предлошка на стварном тексту. Програмер уноси израз и податке како би провјерио и одмах видио резултат обраде. Обично постоји и референтна секција која детаљно описује регуларне изразе, примере и разлике у имплементацији за најчешће програмске језике.

Али потпуно вјерујте резултатима онлине услуга.не препоручује се свим програмерима који користе ПХП. Редовни израз, писан и тестиран лично, побољшава квалификације и не осигурава грешке.