RačunalnikiProgramiranje

PHP (regex) - kaj je to? Primeri in preverjanje regularne izraze

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. Razviti svoje algoritme za potrjevanje vodi do izgube časa, združljivosti kodo in zapletenosti v njen razvoj in posodobitev.

Hiter razvoj interneta in WEB-oblikovalskih jezikih zahteva vzpostavitev vsestranskih in kompaktnih pomočjo urejanja besedil z najnižjega zneska, potrebnega za to kodo. To ni nobena izjema in je priljubljena med začetnike in poklicne razvijalci PHP jeziku. Regularni izraz jezik kot predloge besedila poenostaviti nalogo ravnanje besedilo in zmanjša kodo za deset in sto linij. Veliko problemov ni mogoče rešiti na vse brez nje.

Regularni izrazi v PHP

PHP jezik ima tri mehanizme za sodelovanje z regularnimi izrazi - «ereg», «mb_ereg» in «preg". Najpogostejši je vmesnik «preg", katerega naloge zagotoviti dostop do knjižnice PCRE redno izraz podpore, prvotno razvit za jezik Perl, ki je vključen v paket PHP. Preg-išče funkcije v danem besedilo nizov, po določenem vzorcu v jeziku regularnih izrazov.

sintaksa Osnove

Kot del kratkem članku ni mogoče podrobno opisati celoten regularni izraz sintakso, za to obstaja poseben literature. Predstavljamo samo glavne elemente, ki kažejo priložnosti za razvijalce in razumeti primere kode.

V PHP je regularni izraz formalno definirana zelo težko, in tako poenostavili opis. Regularni izraz je besedilni niz. Sestoji iz namenskega separator predlogo in motilca kaže, kako ravnati z njimi. Morebitna vključitev v različnih alternativ in ponovitve vzorcev.

Na primer, v izrazu / \ d {3} - {2} \ d - \ d {2} / m Delilnik je "/", ki ji sledi predlogo in simbol "m" je modifikator.

Vsa moč regularnih izrazov je kodirana z uporabo meta-znakov. Glavni jezik metacharacter je poševnica nazaj - "\". To spremeni vrsto naslednje znake na nasprotno (tj. E. pretvorjen v rednem znakov nadomestni in obratno). Drug pomemben metacharacter je premica «|», določa alternativne predloge. Več primerov meta-znakov:

^ Začetek predmet ali niz
( Začetek subpattern
) konec subpattern
{ Začetek kvantifikator
} konec kvantifikator
\ d decimalno številko od 0 do 9
\ D katerikoli znak, ki je ni več
\ i prazen simbol, prostor, zavihek,
\ w slovar simbol

PHP, obdelavo regularne izraze, prostor obravnavati kot ločeno veljavno značaja, tako da je izražanje XYZ in ABC, kjer so različni.

subpatterns

V PHP rednih subpatterns z oklepaji, in se včasih imenuje "subexpressions". Opravlja naslednje naloge:

  1. alternative za dodeljevanje. Na primer, vročina vzorec (nekaj | Bird |) sovpada z besedami "toploto", "Firebird" in "vroče". In brez oklepajev bo samo prazen niz, "ptica" in "vroče".

  2. "Spektakularnost" subpattern. To pomeni, da če je vzorec ujema podniz, nato vrne vse tekme. Zaradi jasnosti, smo dali zgled. Glede na to regularni izraz: zmagovalec prejme ((zlato | pozlačen) (medalja | cup)) - in niz za tekme, "zmagovalec dobi zlato medaljo." Poleg začetnega stavka, bo izdan rezultati iskanja: "zlato medaljo", "medalje", "zlato".

Izvajalci ponovitev (kvadrifikatory)

Pri pripravi regularni izraz je pogosto treba analizirati ponavljanja številk in simbolov. To ni problem, če ne veliko ponovitev. Toda, kaj storiti, če ne vemo njihovega natančnega števila? V tem primeru je potrebno uporabiti posebne metaznakov.

Za opis ponovitev uporabljajo kvadrifikatory - metaznakov določiti število. Kvadrifikatory so dveh vrst:

  • Skupno v oklepaju;
  • zmanjšana.

Na splošno kvantifikator z minimalno in maksimalno dovoljeno število ponovitev elementa v obliki dveh številk v opor, kot so x {2,5} dotiku. Če je maksimalno število ponovitev ni znana, se drugi argument ni določeno: x {2}.

Skrajšani kvantifikatorja so simboli za najpogostejši ponovitev, da bi se izognili nepotrebnim preobremenitve sintakso. Ponavadi so trije kosi:

1. * - nič ali več ponovitev, kar je enakovredno {0}.

2. + - enega ali več ponovitev, tj {1} ...

3.? - nič ali le ena ponovitev - {0,1}.

Primeri regex

Za tiste, ki se učijo regularne izraze, primere - najboljši učbenik. Dajemo nekaj, da pokažejo svoje priložnosti z najmanj truda. Vse koda je popolnoma združljiv z različicami PHP 4.x in zgoraj. 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 #.

Potrditev e-mail naslov

Naloga. Obstaja stran interneta, na katerih se zahteva obiskovalec naslov e-pošte. Regularni izraz mora pred pošiljanjem sporočil preverite pravilnost naslovov. Preverite, ne zagotavlja, da je določeno nabiralnik dejansko obstaja in sprejema sporočila. Toda izločite očitno napačne naslove, da lahko.

Sklep. Kot pri vsakem programskem jeziku, v PHP lahko regex preverjanje e-poštni naslov, se izvaja na različne načine, in primeri v tem članku niso dokončna in edina izbira. Torej, v vsakem primeru pa bomo zagotovili seznam zahtev, ki jih je treba upoštevati pri načrtovanju in konkretno v celoti odvisno od projekta.

Tako je izraz, ki se testira veljaven e-pošte, je treba preveriti naslednje pogoje:

  1. Prisotnost na startni črti znakom @, in ni nobenih vrzeli.
  2. Domena del naslova znakom @, ki vsebuje le veljavne znake za domenska imena. Enako velja tudi za imena uporabnika.
  3. Pri preverjanju uporabniško ime, je potrebno ugotoviti prisotnost posebnih znakov kot opuščaj ali navpično črto. Taki simboli so potencialno nevarni in lahko vsebujejo takšne vrste napadov, da SQL-injekcijo. Izogibajte naslove.
  4. imena dovoli le eno točko, ki ne sme biti prvi ali zadnji znak v nizu.
  5. Ime domene mora vsebovati najmanj dva in največ šest znakov.

Na primer, ob upoštevanju vseh teh pogojev, je mogoče videti v spodnji sliki.

Potrditev URL-ja

Naloga. Preverite, ali je določeno besedilo niz veljaven naslov URL. Še enkrat, smo ugotovili, da se regularni izrazi URL-preverjanje se lahko izvaja na različne načine.

Sklep. Naša končna različica je, kot sledi:

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

Zdaj analizirali njegove komponente podrobneje z risbo.

zahtevek 1 Pred URL ne sme imeti nobenih znakov
Zahtevek 2 Preverite prisotnost obvezno predpono "http"
točka 3 Ne sme biti simboli
zahtevku 4 Če je "s", naslov URL kaže na zavarovanem povezave "https"
Zahtevek 5 Zahtevani delež od "//"
Zahtevek 6 ni znakov
str. 7-9 Preverjanje prvo domeno in prisotnost točke
p.10-13 Preverjanje domene pisanja drugo raven in točko
p.14-17

Struktura datoteke URL - niz številk, črk, podčrtaj, črtice, pike, in poševnica na koncu

Preverite, številke kreditnih kartic

Naloga. Morate izvesti potrditev vpisano številko kreditne kartice najpogostejših plačilnih sistemov. Varianta samo za kartice Visa in MasterCard.

Sklep. Pri ustvarjanju izraz morate upoštevati morebitno prisotnost vrzeli v vhodni prostor. Številke na zemljevidu so razdeljeni v skupine za lažje branje in nareku. Zato je razumljivo, da lahko oseba, ki poskušajo vnesti številko na ta način (npr. E. Uporaba presledkov).

Napišite univerzalni izraz, ki upošteva morebitne presledkov ali vezajev, je bolj zapleteno kot preprosto zavreči vse znake, razen številk. Zato priporočamo uporabo nadomestni izraz / D, ki odstrani vse znake, razen številk.

Zdaj lahko greste neposredno na številko čeka. Vsa podjetja, izdajatelji kreditnih kartic uporabljajo edinstveno obliko števil. V tem primeru se uporablja, in stranka ni treba vnesti ime družbe - to je določena s številom. Visa kartice se vedno začnejo s številkami 4 in imajo dolžino 13 ali 16 mest. MasterCard se začne v območju 51-55 z dolgo številko 16. Kot rezultat, smo dobili naslednji izraz:

Pred obdelavo naročila, se lahko dodatno testirali zadnje številke o številu, ki se izračuna na Luhn algoritma.

Preverjanje telefonsko številko

Naloga. Preverjanje pravilnosti vneseno telefonsko številko.

Sklep. Število znakov v fiksnih in mobilnih telefonskih številk, precej razlikujejo glede na državo, tako vsestransko preveriti uporabo regularnih izrazov, telefonska številka pravilno nemogoče. Toda mednarodne številke imajo strogo obliko in kot nalašč za preverjanje vzorec. Še več, tako da je vedno več nacionalnih telefonski operaterji se trudijo, da izpolnjujejo enake standarde. Soba struktura je naslednja:

+ CCC.NNNNNNNNNNxEEEE, pri čemer je:

- C - je oznaka države sestoji iz 1-3 številk.

- N - število do 14 številk.

- E - opcija podaljšanje.

Plus je nepogrešljiv element, in znak X je prisoten le, kadar je potrebno podaljšanje.

Kot rezultat imamo naslednji izraz:

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

Številke v območju

Naloga. Treba je zagotoviti naključje celo v določenem območju. Poleg tega, da je treba najti regularni izraz samo številke iz območja.

Sklep. Tukaj je nekaj izrazov za nekatere od najbolj pogostih primerov:

Določimo uro od 1 do 24 ^ (1 [0-2] | [1-9]) $
Dan v mesecu 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekund ali minut 0-59 ^ [1-5]? [0-9] $
Številni 1-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]) $

Iskanje IP-naslovov

Naloga. Treba je ugotoviti, ali je določen niz veljaven IP-naslov v formatu IPv4 v območju od 000.000.000.000-255.255.255.255.

Sklep. Kot pri vseh težavah v jeziku PHP, regularni izraz ima veliko varintov. Na primer, tole:

Spletna preverjanje izrazov

Preverite regularni izraz pravilen za začetnike je lahko težavno zaradi zapletenosti sintakse, ki se razlikuje od "rednih" programskih jezikih. Da bi rešili ta problem, obstaja veliko spletnih testerji izrazov, da bi bilo enostavno, da preveri pravilnost predloge ki ste ga ustvarili v realnem besedilo. Programer vnese podatke izraz in preverjanje in takoj videli rezultat obdelave. Ponavadi je predstavil referenčno točko, ki podrobno opredeli regularne izraze, primere in razlike izvajanja za najbolj razširjenih jezikov.

Ampak, da se povsem zaupate spletnih storitev rezultati niso priporočljiva za vse razvijalce, ki uporabljajo PHP. Regularni izraz je napisano in preverjeno osebno, postavlja kvalifikacije in zagotoviti, da ni napak.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 sl.unansea.com. Theme powered by WordPress.