ÒdinatèPwogram

PHP (rjèks) - sa li ye? Men kèk egzanp epi tyeke ekspresyon regilye

Lè w ap travay ak tèks nan nenpòt lang programmation modèn, devlopè toujou ap rankontre avèk objektif yo nan validation opinyon pou konfòmite ak modèl la vle, rechèch epi ranplase fragman tès yo ak lòt kalite pwosesis operasyon nan enfòmasyon karaktè. Devlope algoritm pwòp validation ou mennen nan pèt nan tan, konpatibilite a Kòd ak konpleksite nan devlopman li yo ak modènizasyon.

Devlopman nan rapid nan entènèt ak WEB-konsepsyon lang yo mande kreyasyon an vle di versatile ak kontra enfòmèl ant nan pwosesis tèks ak yon kantite lajan minimòm obligatwa pou sa a kòd. Li pa gen okenn eksepsyon ak se popilè nan mitan débutan ak devlopè pwofesyonèl nan lang PHP. Lang nan ekspresyon regilye kòm modèl yo tèks yo senplifye travay la nan manyen tèks la epi redwi kòd pou dè dizèn ak dè santèn de liy yo. Anpil pwoblèm pa ka rezoud nan tout san li.

Ekspresyon regilye nan PHP

lang PHP gen twa mekanism pou travay ak ekspresyon regilye - «ereg», «mb_ereg» ak «prèg». Ki pi komen an se koòdone «prèg» a, ki gen fonksyon bay aksè a bibliyotèk la nan pkr sipò nan ekspresyon regilye, orijinal devlope pou lang lan pèrl, ki se enkli nan pakè a PHP. Prèg k ap chèche fonksyon nan yon bay matche tèks fisèl, dapre yon modèl sèten nan lang lan nan ekspresyon regilye.

sentaks Prensip Fondamantal nan

Kòm yon pati nan yon atik nan yon kout li enposib dekri an detay tout sentaks la ekspresyon regilye, pou sa a gen yon literati espesyal. Nou prezante sèlman eleman prensipal yo montre opòtinite pou pwomotè epi mwen konprann egzanp yo kòd.

Nan PHP se ekspresyon regilye fòmèlman defini trè difisil, ak Se poutèt sa senplifye deskripsyon an. Yon ekspresyon regilye se yon fisèl tèks. Li konsiste de yon modèl séparation dedye ak Modifier la ki endike wout la nan okipe li. Posib enklizyon nan altènativ yo ak divès kalite repetisyon nan modèl.

Pou egzanp, nan ekspresyon / \ d {3} - \ d {2} - \ d {2} / m pataj se "/", ki te swiv pa modèl la, ak senbòl «m» nan se Modifier la.

Tout pouvwa a nan ekspresyon regilye se kode lè l sèvi avèk meta-karaktè. metacharacter nan lang prensipal la se antislach a - "\". Li chanje kalite a nan bagay sa karaktè sou opoze a (sa vle di. E. konvèti nan yon generic pèsonaj òdinè ak vis vèrsa). Yon lòt metacharacter enpòtan an se yon liy dwat «|», presize modèl la altènatif. Plis egzanp sou meta-karaktè:

^ Kòmanse objè oswa yon fisèl
( kòmanse subpattern
) Fen subpattern
{ Start kantifikatif
} Fen kantifikatif
\ d chif desimal ki ant 0 a 9
\ D nenpòt karaktè ki se pa yon nimewo
\ a senbòl vid, espas, tab,
\ w senbòl diksyonè

PHP, pwosesis ekspresyon regilye, espas konsidere kòm yon karaktè separe valab, se konsa ekspresyon ki nan XYZ ak ABC KI KOTE yo diferan.

subpatterns

Nan PHP subpatterns regilye pa parantèz, epi yo ap pafwa yo rele "subexpressions". Fè fonksyon sa yo:

  1. altènativ Alokasyon. Pou egzanp, modèl la chalè (yon bagay | Bird |) konyenside avèk mo "chalè a", "firbir" ak "cho". Ak san yo pa parantèz yo li pral sèlman yon fisèl vid, "zwazo" ak "cho".

  2. "Espektakilè" subpattern. Sa vle di ke si modèl la matche chèn, lè sa a retounen tout alimèt. Pou klè, nou bay yon egzanp. Bay ekspresyon ki regilye yo: gayan an resevwa ((lò | lò plake) (meday | tas)) - ak fisèl la pou alimèt, "gayan an vin yon meday lò." Anplis de sa nan fraz la premye, rezilta rechèch la yo pral ba: "Gold Medal", "meday", "lò".

Operatè repetisyon (kvadrifikatory)

Nan konpile ekspresyon ki regilye se souvan nesesè yo analize repetisyon nan nimewo ak senbòl. Sa a se pa yon pwoblèm, si se pa yon anpil nan plede repete yon. Men, kisa w dwe fè lè nou pa konnen nimewo egzak yo? Nan ka sa a li nesesè yo sèvi ak metacharacters espesyal.

Pou yon deskripsyon repetisyon itilize kvadrifikatory - metacharacters ou presize nimewo a. Kvadrifikatory yo se nan de kalite:

  • komen nan parantèz;
  • redwi.

An jeneral kantifikatif manyen pa kantite minimòm ak maksimòm nan pèmèt repetisyon eleman nan fòm lan nan de nonb nan aparèy òtopedik yo, tankou x {2,5}. Si la pou maksimòm kantite plede repete yon se pa sa li te ye, agiman nan dezyèm se pa sa espesifye: x {2}.

Abreje senbol se senbòl pou komen nan pi fò nan plede repete yon yo nan lòd pou fè pou evite nesesè sentaks surcharges. Anjeneral gen twa koupe:

1. * - zewo oswa plis plede repete yon, ki se ekivalan a {0,}.

2. + - youn oswa plis plede repete yon, sa vle di, {1} ...

3.? - zewo oswa yon sèl repete - {0,1}.

Men kèk egzanp rjèks

Pou moun ki aprann ekspresyon regilye, egzanp - liv la pi byen. Nou bay yon kèk ki montre opòtinite yo avèk yon minimòm de efò. Tout kòd se konplètman konpatib ak vèsyon an PHP 4.x ak pi wo a. Bay tout konprann sentaks la, l 'a tout karakteristik ak lang nou rekòmande liv la pa J .. Friedl, "ekspresyon regilye", ki konplètman konsidere kòm sentaks, epi gen yo se egzanp nan ekspresyon regilye pa sèlman PHP, men tou, pou yon Piton, pèrl, miskl, Java, Ruby, ak C #.

Validasyon E-mail adrès

Objektif Travay la. Gen yon paj entènèt sou ki se vizitè a mande imel adrès. ekspresyon regilye dwe tcheke Correct nan adrès ki anvan ou voye mesaj. Tcheke pa garanti ke bwat lèt la espesifye aktyèlman ki egziste epi ki resevwa mesaj. Men, raje soti adrès evidamman mal li kapab.

Desizyon. Kòm avèk nenpòt lang programmation, nan PHP ka rjèks verifikasyon email-adrès kapab aplike nan diferan fason, ak egzanp yo nan atik sa a yo pa chwa final la ak sèlman. Se poutèt sa, nan chak ka, nou pral bay yon lis nan kondisyon ki bezwen li dwe te pran an kont lè pwogramasyon ak espesifik aplikasyon depann antyèman sou pwomotè la.

Kidonk, ekspresyon ki ki teste yon imel ki valab, ta dwe tcheke kondisyon sa yo:

  1. prezans la nan kòmanse nan liy senbòl la @, e pa gen okenn twou vid ki genyen.
  2. Pati nan domèn nan adrès ki nan senbòl la @, gen sèlman karaktè valab pou non domèn. Menm bagay la tou aplike nan non itilizatè a.
  3. Lè w ap tcheke non itilizatè a nesesè detèmine prezans nan karaktè espesyal tankou yon apostwòf oswa liy vètikal. senbòl sa yo ki kapab yon danje epi yo ka genyen nan yo nan kalite sa yo nan atak ki SQL-piki. Evite adrès.
  4. usernames pèmèt sèlman yon pwen, ki pa pouvwa gen karaktè nan premye oswa sot pase a nan fisèl la.
  5. non an domèn dwe gen ladan omwen de epi yo pa plis pase sis karaktè.

Egzanp, pran an kont tout nan kondisyon sa yo ka wè nan figi ki anba la a.

Validasyon nan yon URL

Objektif Travay la. Tcheke si fisèl la tèks espesifye se yon valab adrès URL. Yon fwa ankò, nou sonje ke ka ekspresyon regilye URL-kouran kapab aplike nan divès fason.

Desizyon. vèsyon final nou an se jan sa a:

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

Koulye a, analize eleman li yo nan plis detay lè l sèvi avèk desen an.

reklamasyon 1 Anvan URL la pa ta dwe gen nenpòt karaktè
reklamasyon 2 Tcheke prezans nan prefiks la obligatwa «http»
atik 3 Dwe gen pa gen okenn senbòl
reklamasyon 4 Si gen «la», pwen yo URL nan yon koneksyon sekirite «https»
reklamasyon 5 Obligatwa pòsyon nan "//" nan
reklamasyon 6 Pa gen karaktè
p. 7-9 Verifye domèn nan nivo premye ak prezans nan pwen
p.10-13 Verifye domèn nan nan ekri nivo, dezyèm lan ak pwen an
p.14-17

estrikti File URL - yon seri nimewo, lèt, evidans, tirè, pwen, ak yon koupe nan fen

Tcheke nimewo yo kat kredi

Objektif Travay la. Ou bezwen aplike validation nan nimewo a antre kat kredi nan sistèm yo peman pi komen. Yon Variant sèlman pou kat viza ak MasterCard.

Desizyon. Lè y ap kreye ekspresyon ki ou bezwen pran an kont prezans a posib pou twou vid ki genyen nan sal la opinyon. chif yo sou kat jeyografik la yo divize an gwoup pi fasil pou lekti ak dikte. Se poutèt sa, li se natirèl ke yon moun ka eseye antre nan yon nimewo nan fason sa a (sa vle di. E. Sèvi ak espas).

Ekri yon ekspresyon inivèsèl ki pran nan kont anbank espas yo posib oswa tire, se pi plis konplike pase tou senpleman jete tout karaktè eksepte chif. Se poutèt sa, nou rekòmande pou lè l sèvi avèk yon ekspresyon generic / D, ki retire tout karaktè eksepte chif.

Koulye a, ou ka ale dirèkteman nan nimewo a chèk la. Tout konpayi yo, emeteur kat kredi sèvi ak yon fòma Nimewo inik. Nan egzanp lan li se itilize, ak kliyan an pa bezwen antre nan non an nan konpayi an - li se detèmine pa nimewo a. kat Visa toujou kòmanse avèk chif yo 4 epi yo gen yon longè de 13 oswa 16 chif. MasterCard kòmanse nan a ranje 51-55 ak nimewo longè 16. Kòm yon rezilta, nou jwenn ekspresyon sa a:

Anvan pwosesis lòd nan ka fè pli lwen teste chif yo sot pase yo nan nimewo a, ki se kalkile sou algorithm nan Luhn.

Verifye nimewo telefòn

Objektif Travay la. Lè nap Peye Correct nan nimewo telefòn lan antre nan.

Desizyon. Nimewo a nan chif nan nimewo yo fiks ak mobil telefòn varye konsiderableman depann sou peyi a, se konsa inivèsèl tcheke lè l sèvi avèk ekspresyon regilye, nimewo telefòn kòrèkteman enposib. Men, nimewo entènasyonal gen yon fòma strik ak pafè pou tcheke modèl la. Menm plis se konsa ke pi plis ak plis operatè telefòn nasyonal yo ap eseye satisfè estanda a menm. estrikti chanm se jan sa a:

+ CCC.NNNNNNNNNNxEEEE, kote:

- C - se kòd la peyi ki fòme ak 1-3 chif.

- N - nimewo jiska 14 chif.

- E - si ou vle ekstansyon.

Plus se yon eleman endispansab, ak siy X la se prezan sèlman lè sa nesesè ekstansyon.

Kòm yon rezilta nou gen ekspresyon sa a:

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

Nimewo sa yo nan seri a

Objektif Travay la. Li nesesè asire konyensidans nonb antye relatif nan yon seri sèten. Anplis de sa, li nesesè yo jwenn yon ekspresyon regilye sèlman chif yo nan seri a.

Desizyon. Isit la se yon ekspresyon kèk nan kèk nan ka ki pi komen:

Detèmine Lè sa va rive nan 1 rive nan 24 ^ (1 [0-2] | [1-9]) $
Jou nan mwa a 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Segonn oswa minit 0-59 ^ [1-5]? [0-9] $
Yon nimewo nan 1 rive nan 100 * (100 |? [1-9] [0-9]) $
Jou nan ane 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Search IP-adrès

Objektif Travay la. Li nesesè detèmine si yon fisèl bay se yon valab IP-adrès nan fòma IPv4 nan seri a soti nan 000.000.000.000-255.255.255.255.

Desizyon. Kòm avèk nenpòt pwoblèm nan lang lan nan PHP, ekspresyon ki regilye gen anpil varintov. Pou egzanp, sa a:

Sou entènèt kont kouran nan ekspresyon

Tcheke rjèks kòrèkteman pou débutan ka difisil paske nan konpleksite a nan sentaks la, ki diferan de lang programmation "regilye". Pou rezoud pwoblèm sa a, gen anpil sou entènèt Tester ekspresyon ki fè l pi fasil yo tcheke Correct nan modèl la ou te kreye nan tèks la reyèl. pwogramè a antre nan ekspresyon ak verifikasyon done yo ak imedyatman wè rezilta a nan pwosesis la. Anjeneral gen prezante yon seksyon referans, ki detay ekspresyon yo regilye, egzanp ak diferans ki genyen aplikasyon pou lang ki pi pwolonje.

Men, nan sèvis konplètman konfyans sou entènèt Rezilta pa rekòmande pou tout devlopè ki sèvi ak PHP. Yon ekspresyon regilye ekri epi yo dwe verifye nan moun, ogmante kalifikasyon ak garanti absans la nan erè.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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