KompyutaProgramu

PHP (regex) - ni nini? Mifano na kuangalia maneno ya kawaida

Wakati wa kufanya kazi na maandishi katika lugha yoyote ya kisasa ya programu, watengenezaji daima kukutana na malengo ya pembejeo uthibitisho kwa kuambatana na muundo taka, utafutaji na kuchukua nafasi ya vipande mtihani na aina nyingine ya usindikaji shughuli ya taarifa herufi. Kuendeleza yako mipangilio ya uthibitisho kwa inaongoza kwa hasara ya muda, kanuni utangamano na utata katika maendeleo yake na wa kisasa.

maendeleo ya haraka ya mtandao na WEB-design lugha required kuundwa njia hodari na kompakt ya usindikaji wa maandishi kwa kiasi cha chini zinazohitajika kwa kanuni hii. Ni hakuna ubaguzi na ni maarufu miongoni mwa Kompyuta na watengenezaji wa kitaalamu wa lugha PHP. mara kwa mara lugha kujieleza kama templates maandishi kurahisisha jukumu la utunzaji wa maandishi na kupunguza code kwa mamia na mamia ya mistari. Matatizo mengi haliwezi kutatuliwa kabisa bila yake.

Maneno Regular katika PHP

lugha PHP ina njia tatu kwa kufanya kazi na maneno ya kawaida - «Ereg», «mb_ereg» na «preg». ya kawaida ni interface «preg», ambao kazi kutoa idhini ya kufikia maktaba ya PCRE msaada wa mara kwa mara kujieleza, awali ya maendeleo kwa ajili lugha Perl, ambayo ni pamoja na katika mfuko PHP. Preg ya kutafuta kazi katika kupewa maandishi kamba vinavyolingana, kwa mujibu wa muundo fulani katika lugha ya maneno ya kawaida.

syntax Misingi

Kama sehemu ya makala fupi haiwezekani kuelezea kwa kina yote ya mara kwa mara kujieleza syntax, kwa ajili ya hii kuna maandishi maalum. Sisi sasa tu mambo kuu ya kuonyesha fursa za developer na kuelewa mifano code.

Katika PHP kujieleza kwa mara ni rasmi defined vigumu sana, na kwa hiyo kurahisisha maelezo. usemi wa kawaida ni mtungo wa maandishi. Lina kujitolea separator template na modifier kuonyesha njia ya kushughulikia hilo. Uwezekano kuingizwa katika njia mbadala mbalimbali na marudio ya ruwaza.

Kwa mfano, katika usemi / \ d {3} - \ d {2} - \ d {2} / m msuluhishi ni "/", ikifuatiwa na template, na ishara «m» ni modifier.

nguvu zote za maneno ya kawaida ni encoded kutumia meta-wahusika. lugha kuu metacharacter ni backslash - "\". Ni mabadiliko ya aina ya yafuatayo wahusika juu ya kinyume (yaani. E. kuongoka katika kawaida tabia wildcard na kinyume chake). metacharacter nyingine muhimu ni moja kwa moja line «|», bayana template mbadala. Mifano zaidi ya meta-wahusika:

^ Kuanza kitu au kamba
( kuanza subpattern
) mwisho subpattern
{ Start watakwimu
} mwisho watakwimu
\ d tarakimu decimal 0-9
\ D tabia yoyote ambayo si ya simu
\ s tupu ishara, nafasi, tab,
\ w ishara kamusi

PHP, usindikaji maneno ya kawaida, nafasi kuchukuliwa kama tabia tofauti ya msingi, hivyo usemi wa XYZ na ABC WAPI ni tofauti.

subpatterns

Katika PHP subpatterns kawaida na mabano, na wao ni wakati mwingine inaitwa "subexpressions". Kazi zifuatazo:

  1. Ugawaji njia mbadala. Kwa mfano, joto muundo (kitu | Bird |) sanjari na maneno "joto", "Firebird" na "moto". Na bila mabano itakuwa tu kamba tupu, "ndege" na "moto".

  2. "Spectacular" subpattern. Hii ina maana kwamba kama mfano kuendana mfuatano mdogo, basi anarudi mechi zote. Kwa ufafanuzi, sisi kutoa mfano. Kutokana zifuatazo kilinganishi: mshindi anapata ((dhahabu | dhahabu plated) (medali | kikombe)) - na kamba kwa mechi, "mshindi anapata medali ya dhahabu." Mbali na maneno ya awali, matokeo ya utafutaji itakuwa imetolewa, "medali ya dhahabu", "medali", "dhahabu".

Waendeshaji marudio (kvadrifikatory)

Katika kuandaa kujieleza kwa mara mara kwa mara ni muhimu kuchambua marudio ya namba na alama. Hili si tatizo, kama sio nyingi marudio. Lakini nini cha kufanya wakati sisi hawajui idadi yao halisi? Katika hali hii ni muhimu kutumia metacharacters maalum.

Kwa maelezo ya marudio kutumika kvadrifikatory - metacharacters kutaja idadi. Kvadrifikatory ni ya aina mbili:

  • kawaida katika mabano;
  • kupunguzwa.

Kwa ujumla watakwimu kuguswa na idadi ya chini na kiwango cha juu ya kuruhusiwa marudio kipengele katika mfumo wa namba mbili katika braces, kama vile x {2,5}. Kama idadi ya juu ya marudio haijulikani, hoja ya pili haijabainishwa: x {2}.

Kifupi wakaguzi ni ishara ya kawaida ya marudio ili kuepuka lazima overloading syntax. Kwa kawaida kuna kupunguzwa tatu:

1. * - zero au zaidi marudio, ambayo ni sawa na {0,}.

2. + - marudio moja au zaidi, yaani, {1} ...

3.? - sifuri au moja tu kurudia - {0,1}.

mifano regex

Kwa wale ambao kujifunza maneno ya kawaida, mifano - kiada bora. Sisi kutoa chache ambazo zinaonyesha nafasi zao kwa kiwango cha chini ya juhudi. Kanuni zote ni kikamilifu sambamba na matoleo ya PHP 4.x na zaidi. Kuelewa kikamilifu syntax na matumizi ya sifa ya lugha zote tunapendekeza kitabu na J .. Friedl, "maneno ya kawaida", ambayo kikamilifu kuchukuliwa syntax, na kuna mifano ya maneno ya kawaida tu PHP, lakini pia kwa ajili Python, Perl, MySQL, Java, Ruby, na C #.

Validation E-pepe

Kazi. Kuna ukurasa Internet ambayo mgeni ombi anwani ya barua pepe. Mara kwa mara kujieleza lazima kuangalia usahihi wa anwani za kabla ya kutuma ujumbe. Angalia haina dhamana kwamba maalum mailbox kweli lipo na kupokea ujumbe. Lakini kupalilia nje anwani wazi makosa wanaweza.

Uamuzi. Kama ilivyo kwa lugha ya programu yoyote, katika PHP regex uhakiki email-anwani unaweza kutekelezwa katika njia tofauti, na mifano katika makala hii si mwisho na tu uchaguzi. Kwa hiyo, katika kila kesi, tutakuwa kutoa orodha ya mahitaji ambayo yanahitaji kuzingatiwa wakati programu na utekelezaji maalum inategemea kabisa juu ya developer.

Hivyo, usemi kwamba vipimo halali ya barua pepe, unapaswa kuangalia masharti yafuatayo:

  1. kuwepo kwa kuanzia line @ ishara, na hakuna mapungufu.
  2. uwanja sehemu ya anwani ya @ ishara, ina tu vibambo halali kwa majina ya uwanja. hiyo inatumika kwa jina la mtumiaji.
  3. Wakati kuangalia username ni muhimu kuamua kuwepo kwa wahusika maalum kama vile alama ya mtajo au mstari wima. alama hizo ni uwezekano wa hatari na inaweza zilizomo katika aina hiyo ya mashambulizi ambayo SQL-sindano. Kuepuka anwani.
  4. majina ya watumiaji kuruhusu tu hatua moja, ambayo inaweza kuwa tabia ya kwanza au ya mwisho katika kamba.
  5. jina la uwanja lazima iwe na herufi zaidi ya sita angalau mbili na si.

Mfano, kwa kuzingatia yote ya masharti hayo inaweza kuonekana katika takwimu zifuatazo.

Validation ya URL

Kazi. Angalia kama maandishi maalum kamba ni halali anwani URL. Kwa mara nyingine tena, tunaona kwamba maneno ya kawaida URL-kuangalia unaweza kutekelezwa kwa njia mbalimbali.

Uamuzi. toleo yetu ya mwisho ni kama ifuatavyo:

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

Sasa kuchambua sehemu zake kwa kina zaidi kwa kutumia kuchora.

madai 1 Kabla URL haipaswi kuwa wahusika yoyote
madai 2 Angalia mbele ya kiambishi awali lazima «http»
kipengee 3 Lazima kuwepo na hakuna alama
madai 4 Kama kuna «s», pointi URL muunganisho salama «https»
madai 5 Inahitajika sehemu ya "//"
madai 6 hakuna herufi
p. 7-9 Inathibitisha kwanza cha uwanja na kuwepo kwa uhakika
p.10-13 Inathibitisha uwanja wa kuandika cha pili na uhakika
p.14-17

File muundo URL - seti ya namba, herufi, mistari chini, deshi nukta, na mkato mwisho

Angalia idadi ya kadi

Kazi. Unahitaji kutekeleza uthibitisho wa kuingia kadi ya malipo ya mifumo ya malipo ya kawaida. lahaja tu kwa kadi Visa na MasterCard.

Uamuzi. Wakati kujenga kujieleza unahitaji kuzingatia na uwezekano wa mapengo katika chumba kuingiza. ya tarakimu katika ramani ni kugawanywa katika makundi kwa ajili ya kusoma rahisi na imla. Kwa hiyo, ni kawaida kwamba mtu anaweza kujaribu kuingiza nambari hivi (yaani. E. Kutumia nafasi).

Andika neno zima unaozingatia mazingira inawezekana au hyphens, ni ngumu zaidi kuliko tu kutupa wahusika wote isipokuwa tarakimu. Kwa hiyo, sisi kupendekeza kutumia wildcard kujieleza / D, ambayo kuondosha wahusika wote isipokuwa tarakimu.

Sasa unaweza kwenda moja kwa moja kwa nambari kuangalia. Makampuni yote, kadi ya mikopo issuers kutumia kipekee muundo wa nambari. Katika mfano ni kutumika, na mteja haina haja ya kuingia jina la kampuni - ni imedhamiria kwa idadi. kadi Visa daima kuanza na namba 4 na kuwa na urefu wa tarakimu 13 au 16. MasterCard huanza katika aina mbalimbali ya 51-55 na idadi ya muda mrefu 16. Matokeo yake, sisi kupata maelezo yafuatayo:

Kabla kushughulikia agizo inaweza kuwa zaidi majaribio ya tarakimu ya mwisho ya idadi, ambayo ni mahesabu juu ya Luhn algorithm.

Inathibitisha nambari ya simu

Kazi. Kuangalia usahihi wa kuingia namba ya simu.

Uamuzi. Idadi ya nambari kwa idadi fasta na simu za rununu kutofautiana mno kulingana na nchi, hivyo wote kuangalia kutumia maneno ya mara kwa mara, namba ya simu kwa usahihi haiwezekani. Lakini idadi ya kimataifa na format kali na kamili kwa ajili ya kuangalia muundo. Hata zaidi ili zaidi na zaidi ya taifa waendeshaji simu ni kujaribu kufikia kiwango hicho. Chumba muundo ni kama ifuatavyo:

+ CCC.NNNNNNNNNNxEEEE, ambapo:

- C - ni msimbo wa nchi iliyo na tarakimu 1-3.

- N - Idadi hadi tarakimu 14.

- E - hiari ya kiendelezi.

Plus ni ya lazima, na ishara X ni sasa tu wakati zinahitajika kiendelezi.

Matokeo yake tuna kujieleza yafuatayo:

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

Idadi katika mbalimbali

Kazi. Ni muhimu kuhakikisha bahati integer ya mbalimbali fulani. Aidha, ni muhimu kupata maelezo ya mara kwa mara tu idadi kutoka masafa.

Uamuzi. Hapa ni maneno machache na baadhi ya matukio ya kawaida:

Kuamua saa 1-24 ^ (1 [0-2] | [1-9]) $
Siku katika mwezi 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekunde au dakika 0-59 ^ [1-5]? [0-9] $
kutoka 1 hadi 100 * (100 |? [1-9] [0-9]) $
Siku ya mwaka 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Search IP anwani

Kazi. Ni muhimu kuamua kama kamba yaliyotolewa ni halali IP anwani katika IPv4 format mbalimbali kutoka 000.000.000.000-255.255.255.255.

Uamuzi. Kama na tatizo lolote kwa lugha PHP, kujieleza kwa mara ina watu wengi varintov. Kwa mfano, hii:

Online kuangalia ya maneno

Angalia regex usahihi kwa Kompyuta inaweza kuwa vigumu kwa sababu ya utata wa syntax, ambayo ni tofauti na "kawaida" lugha ya programu. Ili kutatua tatizo hili, kuna online wapimaji maneno kwamba kufanya ni rahisi kuangalia usahihi wa template uliounda katika maandishi ya kweli. programu inaingia kujieleza na ukaguzi data na papo hapo kuona matokeo ya usindikaji. Kwa kawaida kuna sasa sehemu ya kumbukumbu, ambayo maelezo ya maneno ya mara kwa mara, mifano na tofauti ya utekelezaji kwa ajili ya lugha ya pana.

Lakini kwa huduma kikamilifu uaminifu online matokeo haipendekezwi kwa watengenezaji wote ambao wanatumia PHP. kujieleza kwa mara imeandikwa na kuthibitishwa kwa ana, huzua kufuzu na kuthibitisha kutokuwepo kwa makosa.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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