KompjûtersProgramming

PHP (regex) - wat is it? Foarbylden en kontrolearjen reguliere ekspresjes

Wannear't wurkje mei tekst yn alle moderne programmeartaal taal, ûntwikkelers konstant moetsje mei de doelstellings fan 'e ynput kontrôle foar it neilibjen fan de winske patroan, sykjen en ferfange test biten en oare soarten ferwurkjen operaasjes fan karakter ynformaasje. Ûntwikkeljen dyn eigen falidaasje Algorithmen liedt ta ferlies fan de tiid, de koade komptabiliteit en kompleksiteit yn syn ûntwikkeling en modernisearring.

De flugge ûntwikkeling fan it ynternet en it WEB-design talen fereasket it oanmeitsjen fan de alsidige en kompakte middel fan tekst ferwurking mei in minimum bedrach nedich foar dizze koade. It is gjin útsûndering en is populêr ûnder begjinners en profesjonele ûntwikkelers fan PHP taal. De reguliere ekspresje taal as de tekst sjabloanen te ferienfâldigjen de taak fan it ôfhanneljen fan de tekst en it ferminderjen code for tsientallen en hûnderten linen. In soad problemen kinne net oplost hielendal sûnder it.

Reguliere uteringen yn PHP

PHP taal hat trije meganismen foar wurkjen mei reguliere ekspresjes - «ereg», «mb_ereg» en «preg». De meast foarkommende is de ynterface «preg», waans funksjes jouwe tagong ta de bibleteek fan de PCRE reguliere útdrukking stipe, oarspronklik ûntwikkele foar it Perl-taal, dat is opnaam yn de PHP pakket. Preg-seeking funksjes yn in opjûne tekenrige matching, neffens in bepaalde patroan yn 'e taal fan reguliere ekspresjes.

syntaksis Basics

As ûnderdiel fan in koarte artikel is it ûnmooglik om te beskriuwen yn detail de hiele reguliere útdrukking syntaksis, want dit is der in spesjale literatuer. Wy presintearje allinne de wichtichste eleminten te sjen kânsen foar ûntwikkelder en begripe de koade foarbylden.

Yn PHP reguliere ekspresje wurdt formeel definiearre hiel dreech, en dêrom ferienfâldigje de beskriuwing. In reguliere ekspresje is in tekenrige. It bestiet út in tawijd skiedingsteken sjabloan en de modifikaasjekaai oanjout it paad te omgean kin. Mooglike opnimmen yn de ferskate alternativen en de werhellingen fan patroanen.

Bygelyks, in útdrukking / \ d {3} - \ d {2} - \ d {2} / m divider is "/", folge troch de sjabloan, en it symboal «m» is de modifikaasjekaai.

Al de krêft fan de reguliere ekspresjes is kodearre mei help meta-tekens. De wichtichste taal metacharacter is de backslash - "\". It feroaret it type folgjende tekens op 'e tsjinoerstelde (dws. E. omsetten yn in gewoane karakter wildcard en oarsom). In oare wichtige metacharacter is in rjochte line «|», spesifisearret de alternative sjabloan. Mear foarbylden fan meta-tekens:

^ Begjin foarwerp of in tekenrige
( Start subpattern
) ein subpattern
{ Start Lists
} ein Lists
\ d desimaal sifer fan 0 oant en mei 9
\ D eltse karakter dat net in nûmer
\ s lege symboal, romte, tab,
\ w symboal wurdboek

PHP, ferwurkjen reguliere útdrukkings, romte beskôge as in aparte jildich karakter, sadat de útdrukking fan XYZ en ABC WHERE binne oars.

subpatterns

Yn PHP geregeldwei subpatterns troch heakjes, en se wurde soms neamd "subexpressions". Útfiere de neikommende funksjes:

  1. Tawizing alternativen. Bygelyks, de waarmte patroan (wat | Bird |) gear mei de wurden "warmte", "Firebird" en "hjit". En sûnder de heakjes it sil allinne wêze in lege tekenrige, "fûgel" en "hjit".

  2. "Spectacular" subpattern. Dit betsjut dat as de patroan matched substring, dan jout alle wedstriden. Foar de dúdlikens, wy jouwe in foarbyld. Mei it each op de folgjende reguliere útdrukking: de winner krijt ((gold | gold plated) (medalje | cup)) - en de tekenreeks yn foar wedstriden, "de winner krijt in gouden medalje." Njonken de oarspronklike útdrukking, de sykresultaten sille wurde útjûn: "Gold Medal", "medaljes", "gouden".

Oanbieders werhellings (kvadrifikatory)

By it gearstallen fan de reguliere útdrukking is faak nedich om te analysearjen de werhelling fan sifers en symboalen. Dat is gjin probleem, as der net in soad werhellingen. Mar wat te dwaan as wy net kenne harren krekte nûmer? Yn dit gefal is it nedich om te brûken spesjale metacharacters.

Foar in beskriuwing fan werhellingen brûkt kvadrifikatory - metacharacters te spesifisearjen it nûmer. Kvadrifikatory binne fan twa soarten:

  • mienskiplik tusken heakjes;
  • ferlytse.

Totale Lists rekke troch it minimum en maksimum oantal tastien werhellings elemint yn 'e foarm fan twa getallen yn de blokheakjes, lykas x {2,5}. As it maksimum oantal werhellings is net bekend, de twadde argumint is net oantsjutte: x {2}.

Ôfkoarte Öömrang foarkomme binne symboalen foar de meast foarkommende fan werhellingen om foar te kommen ûnnedich overloading syntaksis. Meastal binne der trije besunigings:

1. * - nul of mear werhellings, wat lyk stiet mei {0,}.

2. + - ien of mear werhellings, dat wol sizze, {1} ...

3.? - nul of mar ien Repeat - {0,1}.

foarbylden regex

Foar dyjingen dy't leare reguliere ekspresjes, foarbylden - de bêste learboek. Wy jouwe in pear dy't sjen litte harren mooglikheden mei in minimum fan ynspanning. Alle koade is folslein kompatibel mei ferzjes fan PHP x 4, x en boppe. Om folslein ynsicht yn de syntaksis en it brûkme fan alle taal funksjes wy riede it boek troch J .. Friedl, "reguliere útdrukkings", dy't folslein beskôge syntaksis, en der binne foarbylden fan reguliere ekspresjes net allinne PHP, mar ek foar in Phyton, Perl, MySQL, Java, Ruby, en C #.

Validation E-mail adres

Taak. Der is in ynternet side dêr't de besiker wurdt frege adres e-mail. Reguliere ekspresje moat kontrolearje de correctness fan de adressen foardat it ferstjoeren fan berjochten. Check net garandearje dat de oantsjutte mailbox echt bestiet en ûntfangt berjochten. Mar weed út fansels ferkearde adressen dat kin.

Beslút. As mei elts type programmearring taal, yn PHP regex email-adres verification kin wurde útfierd yn ferskate manieren, en de foarbylden yn dit artikel binne net de finale en ienige kar. Dêrom, yn elts gefal, we sille soargje foar in list fan easken dy't moatte wurde rekken holden doe't programmearring en spesifike útfiering hinget alhiel fan de projektûntwikkelder.

Sa, de útdrukking dy't test in jildich e-mail, Rieplachtsje de folgjende betingsten:

  1. De oanwêzigens yn it begjinpunt LINE de @ symboal, en der binne gjin lakunes.
  2. It domein diel fan it adres fan 'e @ symboal, befettet allinne jildige tekens foar domeinnammen. Itselde jildt foar de brûker namme.
  3. By it kontrolearen de brûkersnamme is nedich om te bepalen de oanwêzigens fan spesjale tekens lykas in apostrophe of fertikale line. Sokke symboalen binne potinsjeel gefaarlik en kin ommers yn sokke soarten fan oanfallen dat SQL-ynjeksje. Avoid adressen.
  4. brûkersnammen tastean mar ien punt, dy't miskien net de earste of lêste teken yn de tekenrige.
  5. It domein namme moat befetsje op syn minst twa en net mear as seis tekens.

Foarbyld, rekken hâldend al fan dizze betinksten kinne sjoen wurde yn it neikommende figuer.

Falidaasje fan in URL

Taak. Kontrolearje oft de oantsjutte tekenrige is in jildich adres URL. Ien kear wer, wy rekken mei dat reguliere ekspresjes URL-kontrôle útfierd wurde kinne yn ferskate manieren.

Beslút. Us lêste ferzje is as folget:

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

No analysearje syn komponinten yn mear detail mei help fan de tekening.

eask 1 Foardat de URL moat gjin tekens
claim 2 Kontrolearje de oanwêzigens fan 'e ferplichte foarheaksel «http»
item 3 Der moat gjin symbolen
claim 4 As der «s», de URL punten nei in befeilige ferbining «https»
claim 5 Easke part fan de "//"
claim 6 gjin tekens
p. 7-9 Kontrolearjen fan de earste nivo domein en de oanwêzigens fan punt
p.10-13 Kontrolearjen fan it domein fan it skriuwen it twadde nivo en de punt
p.14-17

File struktuer URL - in set fan nûmers, brieven, streepkes, dashes, stippen, en in slash oan de ein

Kontrolearje de credit card nûmers

Taak. Jo moatte fieren falidaasje fan de ynfierde credit card tal fan de meast foarkommende betelling systemen. In fariant allinnich foar kaarten Visa en MasterCard.

Beslút. By it meitsjen fan de útdrukking jo moatte rekken hâlden mei de mooglike oanwêzigens fan hiaten yn de ynfier keamer. De sifers op de kaart binne ûnderferdield yn groepen foar makliker lêzen en diktee. Dêrom is it natuerlike dat in persoan kin besykje te fieren in nûmer yn dizze manier (dws. E. Using spaasjes).

Skriuw in universele ekspresje dat wurdt rekken hâlden mei de mooglike romten of einregeltekens, is mear yngewikkelder as gewoanwei wurde alle tekens útsein sifers. Dêrom, wy riede mei help fan in wildcard ekspresje / D, dat smyt al tekens útsein sifers.

No kinne jo gean direkt nei it check nûmer. Alle bedriuwen, credit card Utjouwers brûke in unike nûmer formaat. Yn it foarbyld dat brûkt wurdt, en de klant net hoecht te fier de namme fan it bedriuw - dat wurdt bepaald troch it oantal. Visa kaarten altyd begjinne mei de nûmers 4 en hawwe in lingte fan 13 of 16 sifers. MasterCard begjint yn it oanbod fan 51-55 mei in lange nûmer 16. As gefolch, wy krije de folgjende útdrukking:

Foardat it ferwurkjen fan de bestelling kin fierder hifke de lêste sifers fan it nûmer, dat wurdt berekkene op de Luhn algoritme.

Neigean fan telefoannûmer

Taak. Kontrolearjen fan de correctness fan de ynfierde telefoannûmer.

Beslút. It oantal sifers yn 'e fêste en mobile tillefoan nûmers fariearje flink ôfhinklik fan it lân, dus oeral kontrolearje mei help fan reguliere ekspresjes, tillefoannûmmer goed ûnmooglik. Mar ynternasjonale nûmers hawwe in strang yndieling en perfekt foar it kontrolearjen fan it patroan. Noch mear, sadat der mear en mear nasjonaal telefoanyske operators besykje te foldwaan oan deselde standert. Keamer struktuer is as folget:

+ CCC.NNNNNNNNNNxEEEE, wêr:

- C - is it lân koade besteande út 1-3 sifers.

- N - nûmer maksimaal 14 sifers.

- E - opsjoneel extension.

Plus in ûnmisber elemint, en it teken X is oanwêzich allinne as it nedich is útwreiding.

As resultaat hawwe wy de neikommende útdrukking:

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

De nûmers yn it berik

Taak. It is needsaaklik om te garandearjen tafal hiel getal fan in beskaat berik. Dêrneist is it nedich te finen in reguliere ekspresje allinne de nûmers út it berik.

Beslút. Hjir binne in pear uteringen oan guon fan 'e meast foarkommende gefallen:

Bepale oere fan 1 oant 24 ^ (1 [0-2] | [1-9]) $
Dei yn 'e moanne 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekonden of minuten 0-59 ^ [1-5]? [0-9] $
In oantal fan 1 oant 100 * (100 |? [1-9] [0-9]) $
Dei fan it jier 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Search IP-adressen

Taak. It is needsaaklik om te bepalen oft in opjûne tekenrige is in jildich IP-adres yn IPv4 yndieling yn it berik fan 000.000.000.000-255.255.255.255.

Beslút. Sa as mei elts probleem yn 'e taal fan PHP, de reguliere ekspresje hat in protte varintov. Bygelyks, dizze:

Online kontrôle fan uteringen

Kontrolearje regex korrekt foar begjinners kin wêze dreech fanwege de kompleksiteit fan 'e syntaksis, dy't ôfwykt fan "gewoane" programmearring talen. Oplosse dit probleem, der binne in protte online testers útdrukkings dy't meitsje dat it maklik te kontrolearjen it correctness fan de template dy't jo makke yn 'e echte tekst. De programmeur komt de útdrukking en de ferifikaasje gegevens en direkt sjogge it resultaat fan de ferwurking. Meastentiids is der presintearje in ferwizing paragraaf, dy't details it reguliere útdrukkings, foarbylden en ymplemintaasje ferskillen foar de meast útwreide talen.

Mar om folslein fertrouwen online tsjinsten resultaten net oan te rieden foar alle ûntwikkelers dy't brûke PHP. In reguliere ekspresje wurdt skreaun en ferifiearre yn persoan, ferheget kwalifikaasje en garandearje it ûntbrekken fan flaters.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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