PHP (regularni izraz) - kaj je to? Primeri in preverjanje regularnih izrazov
Pri delu z besedilom v vsaki sodobni programskem jeziku, razvijalci nenehno sestane s cilji vhodni validacije za skladnost z želenim vzorcem, iskanje in nadomestiti testnih delci in druge vrste postopkov obdelave podatkov znakov. Razvoj lastnih algoritmov za preverjanje vodi k izgubi časa, nezdružljivosti programske kode in kompleksnosti pri razvoju in modernizaciji.
Vsebina
Hitri razvoj interneta in jeziki spletnega razvoja zahtevajo oblikovanje univerzalnih in kompaktnih naprav za obdelavo besedila z najmanjšo količino kode, ki je potrebna za to. Jezik PHP ni izjema in je priljubljen med začetniki in profesionalnimi razvijalci. Redno izražanje kot jezik besedilnih predlog lahko omogoča poenostavitev naloge obdelave besedila in zmanjšanje programske kode na desetine in stotine vrstic. Mnoge naloge brez tega ne moremo rešiti.
Redni izrazi v PHP
Jezik PHP vsebuje tri mehanizme za delo z regularnimi izrazi - "ereg", "mb_ereg" in "preg". Najpogostejši je vmesnik "preg", katerega funkcije omogočajo dostop do knjižnice podpore pravilnega izražanja PCRE, prvotno razvitega za jezik Perl, ki je vključen v paket PHP. Predg-funkcije se iščejo v določenem besedilnem nizu ujemanj, glede na določen vzorec v jeziku regularnih izrazov.
Osnove sintakse
V okviru kratkega članka ni mogoče podrobno opisati celotne sintakse rednih izrazov, zato ima posebna literatura. Tukaj so samo osnovni elementi za prikaz raznovrstnih možnosti za razvijalca in razumevanje primerov kod.
V PHP je regularni izraz formalno opredeljen zelo težko, zato smo poenostavili opis. Redni izraz je besedilni niz. Sestavljena je iz omejene predloge in modifikatorja, ki kaže, kako ravnati z njim. V predloge je mogoče vključiti različne možnosti in ponovitve.
Na primer, v izrazu / d {3} - d {2} - d {2} / m separator bo "/", potem predlogo gre, in simbol "M" bo modifikator.
Vsa moč rednih izrazov je kodirana z meta-karakterji. Glavni metacharakter jezika je backslash - "". Spremeni vrsto znaka, ki sledi na nasprotni (to pomeni, da se navadni znak spreminja v metacharacter in obratno). Drug pomemben metacharacter je neposredna črta »|«, ki določa alternativne variante predloge. Več primerov metakarakterij:
^ | Začetek predmeta ali niza |
( | Začetek subpattern |
) | Konec podvoza |
{ | Izvor kvantifikatorja |
} | Konec kvantifikatorja |
d | decimalna številka od 0 do 9 |
D | katerikoli znak, ki ni številka |
s | prazen znak, prostor, zavihka |
w | slovarski znak |
PHP, ki obdeluje regularne izraze, obravnava prostor kot ločen pomemben simbol, zato so izrazi ABCDEF in ABC WHERE drugačni.
Subpatterns
V PHP-ju so v oklepajih redne podvzetke in jih včasih imenujemo "podrazenitve". Izvedite naslednje funkcije:
Dodeljevanje alternativ. Na primer, povišana telesna temperatura sovpada z besedami "Heat", "firebird" in "Vroče". In brez oklepajev, bo to le prazen niz, "ptica" in "pečenka".
"Razburljivo" podvozje. To pomeni, da če se podnaslov ujema s predlogo, se kot rezultat vrnejo vsa zadetka. Za jasnost podajamo primer. Navede se naslednji regularni izraz: zmagovalec dobi ((zlato | pozlačeno) (medalja | cup)) - in niz za iskanje tekem: "Zmagovalec prejme zlato medaljo". Poleg izvirne fraze bo rezultat iskanja: "Zlata medalja", "Medalja", "zlato".
Operaterji ponovitev (kvadriere)
Pri ustvarjanju rednih izrazov je pogosto potrebno analizirati ponavljanje števil in simbolov. To ni problem, če ni preveč ponovitev. Kaj pa če ne vemo njihove natančne številke? V tem primeru morate uporabiti posebne metacharacters.
Za opis ponovitev se uporabljajo kvadri - meta-znaki za določanje številke. Kvadri so dve vrsti:
- splošno, v oklepajih;
- skrajšana.
Celotnemu kvantifiku se dotika minimalno in maksimalno število dovoljenih ponovitev elementa v obliki dveh številk v zavihkih, na primer: x {2,5}. Če je največje število ponovitev neznano, drugi argument ni podan: x {2,}.
Zmanjšani kvantifikatorji so simboli za najpogostejša ponovitev, da se izognemo nepotrebnemu preobremenju sintakse. Običajno se uporabljajo tri kratice:
1. * - nič in več ponovitev, kar je enako {0,}.
2. + ena ali več ponovitev, to je {1,}.
3.? - nič ali samo eno ponovitev - {0,1}.
Primeri regularnih izrazov
Za tiste, ki preučujejo redne izraze, so primeri najboljši učbeniki. Dali bomo nekaj, ki bodo pokazale svoje velike priložnosti z najmanj truda. Vse programske kode so v celoti združljive s PHP 4.x in višjimi različicami. Da bi v celoti razumeli sintakso in uporabo vseh jezikovnih značilnosti priporočamo knjigo z J .. Friedl, "regularnih izrazov", ki v celoti šteje sintakso, in obstajajo primeri regularnih izrazov ne samo PHP, ampak tudi za Python, Perl, MySQL, Java, Ruby in C #.
Preverjanje pravilnosti e-poštnega naslova
Naloga. Obstaja internetna stran, kjer se od obiskovalca zahteva e-poštni naslov. Pred pošiljanjem sporočil mora redni izraz preveriti pravilnost prejetega naslova. Ček ne zagotavlja, da določen nabiralnik dejansko obstaja in sprejema črk. Vendar je mogoče umakniti namerno napačne naslove.
Rešitev. Tako kot pri vseh programskih jezikih se lahko v PHPu izvajajo regularni izrazi preverjanja e-poštnega naslova v PHP, primeri v tem članku pa niso končna in edina možnost. Zato bomo v vsakem primeru navedli zahteve, ki jih je treba upoštevati pri programiranju, specifično izvajanje pa je v celoti odvisno od razvijalca.
Torej izraz, ki preveri veljavnost e-pošte, mora preveriti naslednje pogoje:
- Prisotnost simbola @ v izvornem nizu in odsotnost presledkov.
- Domenski del naslova zunaj simbola @ vsebuje samo veljavne znake za imena domen. Enako velja za uporabniško ime.
- Pri preverjanju uporabniškega imena morate ugotoviti, ali so prisotni posebni znaki, na primer apostrof ali navpična črta. Takšni simboli so potencialno nevarni in jih lahko vsebujejo napadi, kot so injekcije SQL. Izogibajte se tem naslovom.
- Uporabniška imena omogočajo samo eno točko, ki ne more biti prvi ali zadnji znak v nizu.
- Ime domene mora vsebovati vsaj dva in največ šest znakov.
Primer, ki upošteva vse te pogoje, je prikazan na spodnji sliki.
Potrjevanje URL-jev
Naloga. Preverite, ali je določen niz besedil veljaven URL. Ponovno lahko redne izraze URL izvajamo na različne načine.
Rešitev. Naša končna različica je naslednja:
/^(https?://)?([da-z.-]+).([az.]{2,6})([/w .-] *) * /? $ /
Zdaj letno analiziramo njegove sestavne dele z uporabo slike.
točka 1 | Preden URL ne more biti noben znak |
točka 2 | Preverimo obvezno predpono "http" |
točka 3 | Ne sme vsebovati nobenih znakov |
točka 4 | Če obstaja "s", URL nakazuje varno povezavo "https" |
točka 5 | Zahtevano "//" |
točka 6 | Brez znakov |
točka 7-9 | Validacija domena prve stopnje in prisotnost točke |
10-13 | Nadzorovanje pravilnosti pisanja druge domene in točke |
Točka 14-17 | Struktura URL-jeve datoteke je niz številk, črk, podčrtov, vezajev, pik in črk na koncu |
Preverjanje številk kreditnih kartic
Naloga. Potrebno je preveriti pravilnost vnesene številke plastične kartice najpogostejših plačilnih sistemov. Različica velja samo za zemljevide Visa in MasterCard.
Rešitev. Pri ustvarjanju izraza morate upoštevati morebitno prisotnost presledkov v vneseni številki. Številke na zemljevidu so razdeljene v skupine za enostavno branje in narekovanje. Zato je povsem naravno, da lahko posameznik skuša vnesti številko na ta način (to je z uporabo presledkov).
Napišite univerzalni izraz, ki upošteva možne presledke in vezaje, je težje kot le spustite vse znake, razen števk. Zato je v izrazu priporočeno, da uporabite / D metacharacter, ki izbriše vse znake, razen števk.
Zdaj lahko greste neposredno na preverjanje števila. Vsa podjetja, ki izdajajo kreditne kartice, uporabljajo enotno obliko številk. V tem primeru se to uporablja in odjemalcu ni treba vnesti imena podjetja - določi jo s številko. Kartice Visa se vedno začnejo s 4 in imajo dolžino 13 ali 16 številk. MasterCard se začne v obsegu 51-55 z dolžino števila 16. Zato dobimo naslednji izraz:
Pred obdelavo naročila lahko opravite dodatno preverjanje zadnje številke številke, ki jo izračuna lunin algoritem.
Preverjanje telefonskih številk
Naloga. Preverjanje pravilnosti vnesene telefonske številke.
Rešitev. Število števk v fiksnih in mobilnih telefonskih številkah se razlikuje glede na državo, zato je univerzalno, da preverite z uporabo regularnega izraza, telefonska številka ne more biti pravilna. Toda mednarodne številke imajo strogo obliko in so odlične za preverjanje s predlogo. Poleg tega vedno več nacionalnih telefonskih operaterjev poskuša upoštevati enoten standard. Struktura številk je naslednja:
+CCC.NNNNNNNNNNxEEEE, kjer:
- C je koda države, sestavljena iz 1-3 števk.
- N - število do 14 cifer.
- E je izbirna razširitev.
Plus je nepogrešljiv element, znak x pa je prisoten samo, če je potreben širitev.
Posledično imamo naslednji izraz:
^ + [0-9] {1,3} [0-9] {4,14} (?: X. +)? $
Številke v območju
Naloga. Treba je zagotoviti, da se celo število ujema z določenim obsegom. Poleg tega je nujno, da se redni izrazi najdejo le iz obsega vrednosti.
Rešitev. Tukaj je nekaj izrazov za nekaj najpogostejših primerov:
Določite uro od 1 do 24 | ^ (1 [0-2] | [1-9]) $ |
Dan v mesecu 1-31 | ^ (3 [01] | [12] [0-9] | [1-9]) $ |
Druga ali minuta 0-59 | ^ [1-5]? [0-9] $ |
Število od 1 do 100 | ^ (100 | [1-9]? [0-9]) $ |
Dan leta 1-366 | ^ (36 [0-6] | 3 [0-5] [0-9] [12] [0-9] {2} | [1-9] [0-9] |
Poiščite naslov IP
Naloga. Morate ugotoviti, ali je navedeni niz veljaven IP-naslov v formatu IPv4 v razponu od 000.000.000.000-255.255.255.255.
Rešitev. Kot pri vsaki nalogi v PHP, ima regularni izraz veliko variant. Na primer:
Spletni test izrazov
Preverjanje regularnih izrazov za pravilnost začetnih programerjev je lahko težavno zaradi kompleksnosti sintakse, ki je drugačna od "običajnih" programskih jezikov. Da bi rešili ta problem, je veliko testerjev za spletno izražanje, ki vam omogočajo preprosto preverjanje pravilnosti ustvarjene predloge v pravem besedilu. Programator vnese izraz in podatke za preverjanje in takoj vidi rezultat obdelave. Običajno je tudi referenčni del, kjer so podrobno opisani regularni izrazi, primeri in razlike pri implementaciji za najpogostejše programske jezike.
Toda popolnoma zaupanje v rezultate spletnih storitev ni priporočljivo za vse razvijalce, ki uporabljajo PHP. Redni izraz, osebno napisan in preverjen, poveča kvalifikacijo in zagotavlja odsotnost napak.
- Seznam programskih jezikov. Programski jeziki na nizki in visoki ravni
- Java: regularni izrazi, posebni znaki
- Razširitve datotek za programske kode: cpp je kaj?
- Regresijsko testiranje programske opreme. Kaj je testiranje regresije?
- Programi testiranja so proces odkrivanja napak v programskem izdelku
- jаvascript, regularni izraz: primeri, preverjanje regularnih izrazov
- Redni izrazi (PHP). PHP: regularni izrazi, primeri
- PHP: regularni izrazi, funkcija preg se ujema z vsemi
- Operator dodelitve v `Pascal`: kaj je namenjeno, kakšna dejanja se izvajajo
- Kako pravilno napisati priročnik v ruskem jeziku
- Hammingova koda. Kodiranje številčnih informacij
- Kaj je postavitev spletnega mesta? Tabela in postavitev bloka: razlike
- Aplikacijska programska oprema, klasifikacija
- Kakšna je programska koda, uporaba, napake
- Kaj je dinamično tipkanje?
- Uporaba metode za nadomestitev ()
- Github - kaj je to? Kako delati z github.com?
- Debug - kaj je to? Opis orodja
- Pogojni stavki, če / else v Python: skladnja in uporaba
- Redni izrazi za beležnico: opis, zamenjava in primeri
- Str.replace: primeri učinkovite uporabe