ComputerProgramming

PHP (regex) - unsa man kini? Mga panig-ingnan ug sa pagsusi sa regular nga mga ekspresyon

Sa diha nga nagtrabaho uban sa teksto sa bisan unsa nga modernong programa nga pinulongan, developers kanunay makigkita sa mga tumong sa input validation alang sa pagtuman sa mga gitinguha sumbanan, pangitaa ug pulihan test tipik ug uban pang mga matang sa pagproseso sa mga operasyon sa impormasyon nga kinaiya. Og imong kaugalingon nga mga algorithms validation modala ngadto sa pagkawala sa panahon, ang code pagkaangay ug pagkakomplikado sa iyang development ug sa modernisasyon.

Ang paspas nga paglambo sa Internet ug WEB-design pinulongan nga gikinahanglan sa paglalang sa versatile ug compact paagi sa text pagproseso sa usa ka minimum nga kantidad nga gikinahanglan alang niini nga code. Kini dili mao ang gawas ug popular nga sa taliwala beginners ug sa propesyonal nga mga developers sa PHP pinulongan. Ang regular nga ekspresyon nga pinulongan ingon nga ang mga templates teksto sa simple ang tahas sa pagdumala sa teksto ug sa pagpakunhod sa code alang sa mga tinagpulo ug gatusan ka mga linya. Daghang mga problema dili masulbad sa tanan nga wala kini.

Ang regular nga Ekspresyon sa PHP

PHP pinulongan adunay tulo ka mekanismo alang sa pagtrabaho uban sa regular nga mga pahayag - «ereg», «mb_ereg» ug «preg». Ang labing komon nga mao ang interface «preg», kansang gimbuhaton paghatag og access ngadto sa librarya sa PCRE regular nga ekspresyon nga suporta, sa sinugdan og alang sa Perl pinulongan, nga gilakip sa PHP package. Preg-sa pagpangita sa mga gimbuhaton sa usa ka gihatag nga teksto hilo matching, sumala sa usa ka pipila ka mga sumbanan diha sa pinulongan sa regular nga mga ekspresyon.

syntax sukaranon

Isip kabahin sa usa ka mubo nga artikulo nga kini dili mahimo sa paghulagway sa detalye sa tibuok regular nga ekspresyon syntax, kay kini adunay usa ka espesyal nga literatura. Kita lamang ang nag-unang elemento sa pagpakita sa mga oportunidad alang sa developer ug makasabut sa mga panig-ingnan code.

Sa PHP regular nga ekspresyon pormal nga gihubit lisud kaayo, ug busa simple sa paghulagway. Ang usa ka regular nga ekspresyon mao ang usa ka teksto hilo. Kini naglangkob sa usa ka hinalad nga separator template ug ang modifier nga nagpakita sa dalan sa pagdumala niini. Posible paglakip sa nagkalain-laing alternatibo ug pagbalik-balik sa mga sumbanan.

Pananglitan, diha sa ekspresyon / \ d {3} - \ d {2} - \ d {2} / m magbabahin mao ang "/", gisundan sa template, ug ang simbolo «m» mao ang modifier.

Ang tanan nga mga gahum sa regular nga mga ekspresyon nga encoded paggamit meta-mga karakter. Ang nag-unang pinulongan metacharacter mao ang backslash - "\". Kini usab sa mga matang sa mosunod nga mga karakter sa atbang (ie. E. Nakabig ngadto sa usa ka ordinaryo nga kinaiya wildcard ug vice versa). Ang laing importante nga metacharacter mao ang usa ka tul-id nga linya «|», nagtino sa mga alternatibong template. Dugang nga mga ehemplo sa meta-mga karakter:

^ Sugdi butang o sa usa ka hilo
( Sugdi subpattern
) katapusan subpattern
{ Start quantifier
} katapusan quantifier
\ d decimal digit gikan sa 0 ngadto sa 9
\ D sa bisan unsa nga kinaiya nga mao ang dili usa ka gidaghanon
\ s walay sulod nga simbolo, nga luna, tab,
\ w simbolo diksiyonaryo

PhP, pagproseso sa regular nga mga ekspresyon, luna giisip ingon nga usa ka lahi nga balido nga kinaiya, mao nga ang mga pagpahayag sa XYZ ug ABC DIIN mga lain-laing mga.

subpatterns

Sa PHP regular subpatterns sa parentesis, ug sila usahay gitawag nga "subexpressions". Sa paghimo sa mosunod nga mga gimbuhaton:

  1. Alokasyon alternatibo. Kay sa panig-ingnan, ang kainit sumbanan (usa ka butang | Bird |) atol sa mga pulong nga "kainit", "Firebird" ug "init nga". Ug sa gawas sa bracket lamang kini usa ka walay sulod nga pisi, "langgam" ug "init nga".

  2. "Maanindot" subpattern. Kini nagpasabot nga kon ang sumbanan magkapareha substring, unya mobalik sa tanan nga mga posporo. Alang sa pagklaro, kita mohatag og usa ka panig-ingnan. Tungod sa mosunod nga regular nga ekspresyon: sa mga mananaog makadawat og ((bulawan | bulawan giputos) (medalya | kopa)) - ug sa pisi alang sa posporo, "sa mga mananaog sa usa ka gets bulawan medalya." Dugang pa sa mga inisyal nga hugpong sa mga pulong, ang mga resulta sa search nga gi-isyu: "Gold Medal", "medalya", "bulawan".

Operators pagbalik-balik (kvadrifikatory)

Sa paghugpong sa mga regular nga ekspresyon mao ang kanunay nga gikinahanglan aron sa pag-analisar sa pagbalik-balik sa mga numero ug mga simbolo. Kini mao ang dili usa ka problema, kon dili sa usa ka daghan sa mga pagbalik-balik. Apan unsa ang buhaton sa diha nga kita wala masayud sa ilang eksaktong gidaghanon? Sa kini nga kaso kini mao ang gikinahanglan sa paggamit sa espesyal nga metacharacters.

Kay sa usa ka paghulagway sa pagbalik-balik nga gigamit kvadrifikatory - metacharacters sa hingalan sa gidaghanon. Kvadrifikatory mga duha ka matang:

  • komon sa bracket;
  • pagkunhod.

Sa kinatibuk-an quantifier mihikap sa minimum ug maximum nga gidaghanon sa mga gitugotan nga pagbalik-balik nga elemento sa sa porma sa duha ka mga numero diha sa mga tukod, sama sa x {2.5}. Kon ang maximum nga gidaghanon sa mga pagbalik-balik mao ang wala makaila, ang ikaduha nga argumento dili bungat: x {2}.

Abbreviated quantifiers mga simbolo alang sa labing komon nga mga pagbalik-balik aron sa paglikay sa wala kinahanglana nga overloading syntax. Kasagaran adunay tulo ka mga pagtibhang:

1. * - zero o labaw pa pagbalik-balik, nga mao ang katumbas sa {0,}.

2. + - usa o labaw pa nga pagbalik-balik, ie, {1} ...

3.? - zero o usa lamang ka balik - {0,1}.

mga panig-ingnan regex

Kay sa mga tawo nga makat-on sa regular nga mga ekspresyon, panig-ingnan - ang labing maayo nga libro. Kita sa paghatag sa pipila ka nga nagpakita sa ilang mga oportunidad sa uban sa usa ka minimum nga paningkamot. Ang tanan nga code mao ang bug-os nga compatible sa mga bersyon sa PHP 4.x ug sa ibabaw. Aron hingpit nga makasabut sa syntax ug paggamit sa tanan nga mga bahin sa pinulongan kita og rekomend sa basahon pinaagi sa J .. Friedl, "regular nga mga ekspresyon", nga sa bug-os giisip syntax, ug adunay mga panig-ingnan sa regular nga mga ekspresyon dili lamang sa PhP, kondili alang usab sa usa ka Python, Perl, MySQL, Java, Ruby, ug C #.

Validation E-mail address

Task. Adunay usa ka Internet panid nga ang bisita nga gihangyo address email. Ang regular nga ekspresyon kinahanglan check sa pagkahusto sa mga adres sa wala pa pagpadala mensahe. Check dili garantiya nga ang bungat mailbox sa tinuod anaa ug nagadawat sa mga mensahe. Apan sagbot sa klaro nga sayop pakigpulong niini mahimo.

Desisyon. Sama sa bisan unsa nga programming nga pinulongan, sa PHP regex email-address verification mahimong ipatuman sa lain-laing mga paagi, ug ang mga panig-ingnan sa niini nga artikulo mao ang mga dili sa katapusan nga ug bugtong nga pagpili. Busa, sa matag kaso, kita sa paghatag sa usa ka lista sa mga kinahanglanon nga kinahanglan sa nga gidala ngadto sa asoy diha nga programming ug piho nga pagpatuman agad sa bug-os sa developer.

Busa, ang ekspresyon nga sulayan ang usa ka balido nga email, kinahanglan check sa mosunod nga mga kondisyon:

  1. Ang presensya sa pagsugod linya sa @ simbolo, ug walay mga kal-ang.
  2. Ang domain bahin sa address sa mga @ simbolo, naglangkob lamang balido karakter alang sa domain mga ngalan. Ang mao usab nga magamit ngadto sa ngalan sa user sa.
  3. Sa diha nga ang pagsusi sa username mao ang gikinahanglan aron sa pagtino sa atubangan sa espesyal nga mga karakter sama sa usa ka apostrope o pinatindog nga linya. Ang maong mga simbolo peligroso ug mahimong anaa sa maong mga matang sa pag-atake nga SQL-injection. Likayi ang mga adres.
  4. gumagamit motugot sa usa lamang ka punto, nga dili mahimo nga ang una o katapusan nga kinaiya sa hilo.
  5. Ang domain ngalan kinahanglan nga naglangkob sa labing menos duha ka ug dili labaw pa kay sa unom ka mga karakter.

Panig-ingnan, nga nagakuha sa ngadto sa asoy sa tanan niini nga mga kahimtang mahimong makita sa mosunod nga numero.

Validation sa usa ka URL

Task. Check kon ang bungat nga teksto hilo mao ang usa ka balido nga address URL. Sa higayon nga pag-usab, atong mamatikdan nga ang regular nga mga ekspresyon URL-pagsusi mahimong ipatuman sa mga nagkalain-laing mga paagi.

Desisyon. Ang atong katapusan nga bersyon mao ang sama sa mosunod:

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

Karon analisar nga sangkap niini sa dugang nga detalye sa paggamit sa drowing.

pag-angkon 1 Sa wala pa ang URL dili kinahanglan nga adunay bisan unsa nga mga karakter
pag-angkon 2 Check sa atubangan sa mga mandatory prefix «http»
butang 3 Kinahanglan nga walay mga simbolo
pag-angkon 4 Kon adunay «s», ang URL puntos ngadto sa usa ka luwas nga koneksyon «https»
pag-angkon 5 Gikinahanglan nga bahin sa "//"
pag-angkon 6 walay mga karakter
p. 7-9 Pagmatuod sa unang ang-ang domain ug sa atubangan sa punto
p.10-13 Nga magpamatuod sa domain sa pagsulat sa ikaduhang ang-ang ug ang mga punto
p.14-17

File gambalay URL - usa ka hugpong sa mga numero, mga sulat, underscore, dash, tulbok, ug usa ka slash sa katapusan

Susiha ang mga numero sa credit card

Task. Ikaw kinahanglan sa pagpatuman sa validation sa mga misulod sa gidaghanon sa credit card sa labing komon nga mga sistema sa pagbayad. Usa ka laing lamang alang sa mga kard Visa ug MasterCard.

Desisyon. Sa diha nga ang pagmugna sa ekspresyon nga imong gikinahanglan sa pag-ngadto sa asoy sa mga posible nga presensya sa mga kal sa input lawak. Ang mga numero sa mapa gibahin ngadto sa mga grupo alang sa mas sayon nga pagbasa ug pagdiktar. Busa, kini mao ang natural nga nga ang usa ka tawo mahimong mosulay sa pagsulod sa usa ka gidaghanon sa niini nga paagi (ie. E. Pinaagi sa paggamit sa mga luna).

Isulat sa usa ka universal ekspresyon nga nagkinahanglan sa asoy sa mga posible nga mga luna o hyphens, mao ang mas komplikado pa kay sa yano nga pagsalikway sa tanang karakter gawas sa numero. Busa, kita og rekomend sa paggamit sa usa ka wildcard ekspresyon / D, nga removes sa tanan karakter gawas sa numero.

Karon nga imong mahimo sa pag-adto direkta sa gidaghanon check. Ang tanan nga mga kompaniya, credit card issuers sa paggamit sa usa ka talagsaon nga gidaghanon sa format. Sa panig-ingnan kini gigamit, ug sa mga kliyente ang dili kinahanglan nga mosulod sa ngalan sa kompaniya sa - kini gitinguha sa sa gidaghanon. Visa cards kanunay magsugod uban sa mga numero 4 ug adunay usa ka gitas-on sa 13 o 16 ka numero. MasterCard nagsugod sa laing mga 51-55 uban sa usa ka taas nga gidaghanon sa 16. Ingon sa usa ka resulta, kita sa mosunod nga ekspresyon:

Sa wala pa ang pagproseso sa kapunongan mahimong dugang pa nga gisulayan sa katapusan nga numero sa gidaghanon, nga kalkulado sa Luhn algorithm.

Pagmatuod numero sa telepono

Task. Pagsusi sa pagkahusto sa mga misulod sa numero sa telepono.

Desisyon. Ang gidaghanon sa mga numero diha sa mga natudlong ug mobile numero sa telepono nagkalainlain dako depende sa nasud, mao nga sa tibuok kalibutan check sa paggamit sa regular nga mga ekspresyon, numero sa telepono sa husto imposible. Apan internasyonal nga mga numero adunay usa ka higpit nga format ug hingpit alang sa pagsusi sa mga sumbanan. Bisan pa nga sa ingon nga sa dugang ug mas national operators sa telepono naningkamot sa pagsugat sa sama nga sumbanan. Room nga gambalay mao ang sama sa mosunod:

+ CCC.NNNNNNNNNNxEEEE, diin:

- C - mao sa nasud code nga naglangkob sa 1-3 ka numero.

- N - gidaghanon sa 14 mga numero.

- E - optional extension.

Plus mao ang usa ka importante nga elemento, ug ang ilhanan X mao ang karon lamang kon gikinahanglan extension.

Ingon sa usa ka resulta kita sa mosunod nga ekspresyon:

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

Ang mga numero sa laing

Task. Kini mao ang gikinahanglan aron sa pagsiguro sa sulagma integer sa usa ka range. Dugang pa, kini mao ang gikinahanglan nga sa pagpangita sa usa ka regular nga ekspresyon lamang ang mga numero gikan sa laing.

Desisyon. Ania ang pipila ka mga nga mga ekspresyon sa pipila sa labing komon nga mga kaso:

Tinoa oras gikan sa 1 ngadto sa 24 ^ (1 [0-2] | [1-9]) $
Adlaw sa bulan 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Segundos o minutos 0-59 ^ [1-5]? [0-9] $
Usa ka gidaghanon gikan sa 1 ngadto sa 100 * (100 |? [1-9] [0-9]) $
Adlaw sa tuig 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Pangita IP-adres

Task. Kini mao ang gikinahanglan aron sa pagtino kon ang usa ka gihatag nga hilo mao ang usa ka balido nga IP-address sa IPv4 format sa laing gikan sa 000.000.000.000-255.255.255.255.

Desisyon. Sama sa bisan unsa nga problema sa pinulongan sa PhP, ang regular nga ekspresyon adunay daghang varintov. Pananglitan, niini:

Online pagsusi sa mga pahayag

Check regex husto alang sa mga magsusugod mahimong lisud nga tungod sa pagkakomplikado sa mga syntax, nga lahi gikan sa "regular" programming mga pinulongan. Aron sa pagsulbad niini nga problema, adunay daghan nga mga online testers mga ekspresyon nga sa paghimo niini nga sayon sa pag-check sa pagkahusto sa mga template gibuhat mo sa tinuod nga teksto. programmer Ang mosulod sa pagpadayag ug verification data ug dihadiha makakita sa resulta sa pagproseso. Kasagaran adunay pagpresentar sa usa ka pakisayran nga seksyon, nga detalye sa regular nga mga ekspresyon, panig-ingnan ug pagpatuman kalainan alang sa labing taas nga mga pinulongan.

Apan sa bug-os nga pagsalig sa mga serbisyo sa online nga mga resulta wala girekomendar alang sa tanan nga mga developers nga sa paggamit sa PHP. Ang usa ka regular nga ekspresyon nahisulat ug an sa tawo, nagpatunghag kwalipikasyon ug garantiya sa pagkawala sa mga sayop.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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