KompjutersIpprogrammar

PHP (regex) - x'inhu? Eżempji u verifika regolari espressjonijiet

Meta taħdem ma 'test f'kull lingwa ta' programmar moderna, l-iżviluppaturi kontinwament jiltaqa 'ma' l-għanijiet tal-validazzjoni input għall-konformità mal-mudell mixtieqa, tiftix u jissostitwixxi frammenti test u tipi oħra ta 'operazzjonijiet ta' pproċessar ta 'informazzjoni karattru. Tiżviluppa algoritmi tiegħek validazzjoni stess twassal għal telf ta 'żmien, il-kompatibilità kodiċi u l-kumplessità fl-iżvilupp u l-modernizzazzjoni tagħha.

L-iżvilupp rapidu tal-Internet u WEB-disinn lingwi meħtieġa l-ħolqien ta 'mezzi versatili u kompatt ta' pproċessar test jingħataw ammont minimu meħtieġ għal dan il-kodiċi. Huwa l-ebda eċċezzjoni u huwa popolari fost jibdew u żviluppaturi professjonali tal-lingwa PHP. L-espressjoni lingwa regolari bħala l-test mudelli li tissimplifika l-kompitu tat-tqandil-test u jnaqqas kodiċi għall għaxriet u mijiet ta 'linji. Ħafna problemi ma jistgħux jiġu solvuti fil-livelli kollha mingħajrha.

Espressjonijiet regolari fil-PHP

lingwa PHP tliet mekkaniżmi sabiex taħdem mal espressjonijiet regolari - "ereg", "mb_ereg" u "preg". L-aktar komuni hija l-interface "preg", li l-funzjonijiet jipprovdu aċċess għal-librerija tal-PCRE espressjoni regolari appoġġ, oriġinalment żviluppati għall-lingwa Perl, li hija inkluża fil-pakkett PHP. Preg-tfittxija funzjonijiet fi tqabbil sekwenza ta 'test partikolari, skond ċertu mudell fil-lingwa ta' espressjonijiet regolari.

Basics sintassi

Bħala parti minn qasir artikolu huwa impossibbli li jiddeskrivu fid-dettall l kollu regolari espressjoni sintassi, għal dan hemm letteratura speċjali. Aħna preżenti biss l-elementi ewlenin li juru opportunitajiet għall iżviluppatur u jifhmu l-eżempji kodiċi.

Fil-PHP espressjoni regolari huwa definit formalment diffiċli ħafna, u għalhekk jissimplifika d-deskrizzjoni. A espressjoni regolari hija sekwenza ta 'test. Din tikkonsisti template separatur dedikat u l-modifikatur tindika l-mod biex jimmaniġġaw dan. inklużjoni possibbli fl-alternattivi varji u repetizzjonijiet ta 'mudelli.

Per eżempju, fl-espressjoni / \ d {3} - {2} \ d - \ d {2} / m diviżur hija "/", segwita mill-mudell, u s-simbolu "m" hija l-modifikatur.

L-enerġija ta 'espressjonijiet regolari hija kodifikata tuża meta-karattri. Il metacharacter lingwa ewlenija hija l-backslash - "\". Tibdel il-tip ta 'karattri li ġejjin fuq l-oppost (ie. E. Mibdul fi Wildcard karattru ordinarju u viċi versa). metacharacter oħra importanti hija linja dritta "|", jispeċifika l-mudell alternattiv. Aktar eżempji ta 'meta-karattri:

^ Ibda oġġett jew string
( Bidu subpattern
) tmiem subpattern
{ bidu quantifier
} tmiem quantifier
\ d ċifra deċimali 0-9
\ Ż kwalunkwe karattru li ma jkunx numru
\ i simbolu vojta, l-ispazju, tab,
\ w simbolu dizzjunarju

PHP, l-ipproċessar espressjonijiet regolari, spazju meqjusa bħala karattru valida separata, hekk l-espressjoni ta 'XYZ u ABC FEJN huma differenti.

subpatterns

Fil PHP subpatterns regolari minn parentesi, u dawn huma kultant msejħa "subexpressions". Iwettaq il-funzjonijiet li ġejjin:

  1. alternattivi allokazzjoni. Per eżempju, il-mudell tas-sħana (xi ħaġa | Bird |) jikkoinċidi mal-kliem "sħana", "Firebird" u "taħraq". U mingħajr il-parentesi se jkun biss string vojta, "għasafar" u "taħraq".

  2. "Spettakolari" subpattern. Dan ifisser li jekk il-mudell mqabbla substring, mbagħad jirritornaha logħbiet kollha. Għaċ-ċarezza, aħna nagħtu eżempju. Minħabba l-espressjoni regolari ġejja:-rebbieħ jirċievi ((deheb | deheb banjat) (midalja | tazza)) - u l-sekwenza ta 'logħbiet, "ir-rebbieħ gets midalja tad-deheb." Minbarra l-frażi inizjali, ir-riżultati tat-tiftix se jinħarġu: "Midalja tad-Deheb", "medalji", "deheb".

Operaturi repetizzjonijiet (kvadrifikatory)

Fil-kumpilazzjoni l-espressjoni regolari spiss ikun meħtieġ li tanalizza l-ripetizzjoni ta 'numri u simboli. Din mhijiex problema, jekk mhux ħafna ta 'repetizzjonijiet. Imma dak li tagħmel meta ma nafux numru eżatt tagħhom? F'dan il-każ huwa meħtieġ li tuża metacharacters speċjali.

Għal deskrizzjoni ta 'repetizzjonijiet użati kvadrifikatory - metacharacters li jispeċifika n-numru. Kvadrifikatory huma ta 'żewġ tipi:

  • komuni fil-parentesi;
  • mnaqqsa.

quantifier ġenerali jintmessu mill-għadd minimu u massimu ta 'element repetizzjonijiet permess fil-forma ta' żewġ numri fil-braces, bħal x {2,5}. Jekk in-numru massimu ta 'repetizzjonijiet ma jkunx magħruf, it-tieni argument mhux speċifikat: x {2}.

quantifiers mqassra huma simboli għall-aktar komuni ta 'repetizzjonijiet sabiex jiġi evitat sintassi tagħbija żejda bla bżonn. Normalment ikun hemm tliet qatgħat:

1. * - żero jew aktar repetizzjonijiet, li huwa ekwivalenti għal {0,}.

2. + - repetizzjonijiet wieħed jew aktar, jiġifieri, {1} ...

3.? - żero jew biss wieħed jirrepetu - {0,1}.

eżempji regex

Għal dawk li jitgħallmu espressjonijiet regolari, eżempji - l-aħjar textbook. Nagħtu ftit li juru l-opportunitajiet tagħhom b'minimu ta 'sforz. Kull kodiċi hija għal kollox kompatibbli mal-verżjonijiet ta '4.x PHP u aktar. Biex jifhmu bis-sħiħ sintassi u l-użu ta 'karatteristiċi lingwistiċi kollha nirrakkomandaw l-ktieb mill J .. Friedl, "espressjonijiet regolari", li qieset b'mod sħiħ sintassi, u hemm eżempji ta' espressjonijiet regolari mhux biss PHP, iżda wkoll għal Python, Perl, MySQL, Java, Ruby, u C #.

Validazzjoni E-mail

Kompitu. Hemm paġna internet fejn il-viżitatur huwa mitlub l-indirizz email. espressjoni regolari għandu jivverifika l-korrettezza tad-indirizzi qabel ma tibgħat messaġġi. Iċċekkja ma tiggarantix li l-kaxxa postali speċifikat fil-fatt teżisti u jirċievi messaġġi. Iżda weed indirizzi ovvjament żbaljat dan jistgħu.

Deċiżjoni. Kif ma 'kull lingwa ta' programmar, fil-PHP verifika regex email indirizz jistgħu jiġu implimentati b'modi differenti, u l-eżempji f'dan l-artikolu ma jkunux l-għażla finali u biss. Għalhekk, f'kull każ, aħna għandu jipprovdi lista ta 'rekwiżiti li jeħtieġ li jittieħdu in kunsiderazzjoni meta jipprogrammaw u l-implimentazzjoni speċifika tiddependi kompletament fuq l-iżviluppatur.

Għalhekk, l-espressjoni li t-testijiet ta 'email validu, għandhom jiċċekkjaw il-kondizzjonijiet li ġejjin:

  1. Il-preżenza fis-tluq linja l-simbolu @, u ma jkunx hemm lakuni.
  2. Il-parti dominju tal-indirizz tas-simbolu @, ikun fih biss karattri validi għal ismijiet ta 'domain. L-istess japplika għall-isem tal-utent.
  3. Meta jiċċekkjaw il-username huwa meħtieġ biex jiddetermina l-preżenza ta 'karattri speċjali bħal apostrophe jew linja vertikali. simboli bħal dawn huma potenzjalment perikolużi u jista 'jinżamm f'dawn tali tipi ta' attakki li SQL injezzjoni. Evita l-indirizzi.
  4. usernames jippermettu biss punt wieħed, li ma jistax ikun l-ewwel jew l-aħħar karattru fil-sekwenza.
  5. L-isem tad-dominju għandu jkun fiha mill-inqas tnejn u mhux aktar minn sitt karattri.

Eżempju, filwaqt li ġew ikkunsidrati l dawn il-kondizzjonijiet jistgħu jidhru fil-figura li ġejja.

Validazzjoni ta URL

Kompitu. Iċċekkja jekk l-sekwenza ta 'test speċifikat huwa validu URL indirizz. Għal darb'oħra, aħna ninnotaw li espressjonijiet regolari URL tal-kontroll jistgħu jiġu implimentati b'modi differenti.

Deċiżjoni. verżjoni finali tagħna huwa kif ġej:

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

Issa janalizzaw komponenti tiegħu f'aktar dettall jużaw it-tpinġija.

talba 1 Qabel il-URL m'għandekx ikollok xi karattri
talba 2 Iċċekkja l-preżenza tal-prefiss obbligatorju "http"
partita 3 Ma jridx ikun hemm simboli
talba 4 Jekk ikun hemm "i", il-punti URL għal konnessjoni sigura "https"
talba 5 porzjon meħtieġ ta 'l- "//"
talba 6 ebda karattri
p. 7-9 Verifika tal- ewwel dominju livell u l-preżenza tal-punt
p.10-13 Verifika tal-qasam tal-kitba l-livell tieni u l-punt
p.14-17

istruttura tal-fajl URL - sett ta 'numri, ittri, jissottolinja, daxxijiet, tikek, u slash fl-aħħar

Iċċekkja l-credit card numri

Kompitu. Ikollok bżonn biex jimplimentaw validazzjoni tal-numru tal-karta ta 'kreditu daħlu tas-sistemi ta' ħlas aktar komuni. Varjant biss għall-karti Visa u MasterCard.

Deċiżjoni. Meta jkun qed jinħoloq l-espressjoni li għandek bżonn tieħu in kunsiderazzjoni l-preżenza possibbli ta 'lakuni fil-kamra input. L-ċifri fuq il-mappa huma maqsuma fi gruppi għall-qari faċli u dettatura. Għalhekk, huwa naturali li persuna tista 'tipprova li jidħol numru b'dan il-mod (ie. E. Bl-użu spazji).

Ikteb espressjoni universali li jieħu in kunsiderazzjoni l-ispazji possibbli jew b'sinkijiet, huwa aktar ikkumplikat minn sempliċiment jarmi karattri kollha ħlief numri. Għalhekk, nirrakkomandaw li jużaw espressjoni Wildcard / D, li tneħħi karattri kollha ħlief numri.

Issa inti tista 'tmur direttament lill-numru verifika. Il-kumpaniji kollha, l-emittenti karta ta 'kreditu jużaw uniku format numru. Fl-eżempju huwa użat, u l-klijent ma jeħtieġx li jidħol l-isem tal-kumpannija - huwa stabbilit bin-numru. karti tal-viża dejjem tibda bil-numri 4 u jkollhom tul ta '13 jew 16 numri. MasterCard jibda fil-medda ta 51-55 b'numru twil 16. Bħala riżultat, irridu jiksbu l-espressjoni li ġejja:

Qabel ipproċessar ta 'ordni tista' tiġi ttestjata iktar l-aħħar ċifri tan-numru, li huwa kkalkulat fuq l-algoritmu Luhn.

Verifika numru tat-telefon

Kompitu. Kontroll tal-korrettezza tan-numru tat-telefon imdaħħla.

Deċiżjoni. In-numru ta 'ċifri fil-numri tat-telefon fissi u mobbli ivarjaw konsiderevolment skond l-pajjiż, hekk universalment jiċċekkjaw jużaw espressjonijiet regolari, numru tat-telefon korrett impossibbli. Iżda numri internazzjonali jkollu l-format stretta u perfetta għall-iċċekkjar tal-mudell. Saħansitra aktar sabiex l-operaturi aktar u aktar nazzjonali tat-telefon qed jippruvaw jilħqu l-istess standard. istruttura kamra hija kif ġej:

+ CCC.NNNNNNNNNNxEEEE, fejn:

- Ċ - huwa l-kodiċi tal-pajjiż li jikkonsisti 1-3 numri.

- N - numru sa 14 numri.

- E - estensjoni fakultattiva.

Plus huwa element indispensabbli, u s-sinjal X hija preżenti biss meta jkun hemm bżonn estensjoni.

Bħala riżultat aħna għandna l-espressjoni li ġejja:

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

In-numri fil-firxa

Kompitu. Huwa meħtieġ li jiġi żgurat numru sħiħ koinċidenza ta 'firxa ċerta. Barra minn hekk, huwa meħtieġ li tinstab espressjoni regolari biss in-numri mill-firxa.

Deċiżjoni. Hawnhekk huma espressjonijiet ftit għal xi wħud mill-aktar każijiet komuni:

Iddetermina siegħa 1-24 ^ (1 [0-2] | [1-9]) $
Jum fix-xahar 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
F'sekondi jew minuti 0-59 ^ [1-5]? [0-9] $
Numru 1-100 * (100 |? [1-9] [0-9]) $
Jum tas-sena 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Fittex IP indirizzi

Kompitu. Huwa meħtieġ li jiġi ddeterminat jekk string partikolari huwa validu IP indirizz f'format IPv4 fil-medda minn 000.000.000.000-255.255.255.255.

Deċiżjoni. Bħal kull problema fil-lingwa ta 'PHP, l-espressjoni regolari għandha varintov ħafna. Per eżempju, dan:

verifika online tal-espressjonijiet

Iċċekkja regex korrett għall jibdew jista 'jkun diffiċli minħabba l-kumplessità tal-sintassi, li hija differenti minn lingwi ta' programmar "regolari". Biex issolvi din il-problema, hemm ħafna espressjonijiet testers online li jagħmluha faċli biex jiċċekkja l-korrettezza tal-mudell inti maħluqa fit-test reali. L-programmer jidħol l-espressjoni u l-verifika tad-data u istantanjament tara r-riżultat tal-ipproċessar. Normalment ikun hemm jippreżentaw sezzjoni ta 'referenza, li jiddettalja il-espressjonijiet regolari, eżempji u d-differenzi ta' implimentazzjoni għall-iktar lingwi estiżi.

Iżda għall-servizzi online b'mod sħiħ fiduċjarji riżultati mhux rakkomandat għall-iżviluppaturi kollha li jużaw PHP. A espressjoni regolari huwa miktub u vverifikat fil-persuna, tqajjem kwalifika u jiggarantixxu l-assenza ta 'żbalji.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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