Kompjuters, Ipprogrammar
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:
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".
"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:
- Il-preżenza fis-tluq linja l-simbolu @, u ma jkunx hemm lakuni.
- 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.
- 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.
- usernames jippermettu biss punt wieħed, li ma jistax ikun l-ewwel jew l-aħħar karattru fil-sekwenza.
- 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