ՀամակարգիչներԾրագրավորում

PHP (regex) - ինչ է դա: Օրինակներ եւ ստուգում կանոնավոր արտահայտություններ

Երբ աշխատում է տեքստի ցանկացած ժամանակակից ծրագրավորման լեզվի, մշակողները անընդհատ հանդիպելու նպատակներից մուտքագրման վավերացում համար համապատասխանության ցանկալի օրինակին, որոնել եւ փոխարինել փորձարկման բեկորները եւ այլ տեսակի վերամշակող գործառնությունների բնույթի տեղեկատվություն: Զարգացնել ձեր սեփական վավերացման ալգորիթմեր հանգեցնում է ժամանակի կորստի, կոդային համատեղելիության եւ բարդությունից իր զարգացման եւ արդիականացման.

Արագ զարգացումը ինտերնետի եւ վեբ-դիզայն լեզուների պահանջվում ստեղծումը բազմակողմանի եւ կոմպակտ միջոցների տեքստով մշակման հետ նվազագույն չափով համար անհրաժեշտ սույն օրենսգրքի: Այն ոչ մի բացառություն է եւ տարածված է սկսնակների եւ մասնագիտական մշակողների PHP լեզվով: Հերթական արտահայտությունը լեզուն, որպես տեքստային կաղապարներ է հեշտացնել խնդիրը բեռնաթափման տեքստը եւ նվազեցնել կոդը համար տասնյակ եւ հարյուրավոր գծերի. Բազմաթիվ խնդիրներ չեն կարող լուծվել բնավ առանց դրա:

Կանոնավոր արտահայտություններ PHP

PHP լեզվի ունի երեք մեխանիզմներ աշխատելու համար կանոնավոր արտահայտություններ, «ereg», «mb_ereg» եւ «preg»: Առավել տարածված է ինտերֆեյսը «preg», որի գործառույթները ապահովել մուտք դեպի գրադարանում PCRE հերթական արտահայտություն աջակցությունը, ի սկզբանե մշակվել է Perl լեզվով, որը ներառված է PHP փաթեթի: Preg-ձգտում գործառույթները տվյալ տեքստը լարային համապատասխան, ըստ որոշակի օրինաչափություն լեզվով կանոնավոր արտահայտություններ:

շարահյուսական հիմունքներ

Որպես մաս կարճ հոդվածում դա անհնար է նկարագրել մանրամասնորեն ամբողջ կանոնավոր արտահայտությունը շարահյուսություն, որովհետեւ դա կա հատուկ գրականություն: Մենք ներկայացնում ենք միայն հիմնական տարրերը, որպեսզի ցույց հնարավորություններ է մշակողի եւ հասկանալ կոդը օրինակներ:

PHP - կանոնավոր արտահայտություն պաշտոնապես սահմանված է շատ դժվար է, եւ, հետեւաբար, պարզեցնել նկարագրությունը: A կանոնավոր արտահայտություն է տեքստը լարային. Այն բաղկացած է մի նվիրված առանձնացնող Կաղապար եւ modifier նշելով ճանապարհը կարգավորել այն: Հնարավոր ներառումը տարբեր այլընտրանքների եւ կրկնողություններից նախշերով.

Օրինակ, արտահայտվելու / \ դ {3} - \ դ {2} - \ դ {2} / մ բաժանարար է "/", որին հաջորդում են Կաղապար, եւ խորհրդանիշը «m» է կերպափոխիչ:

Բոլոր իշխանությունը կանոնավոր արտահայտություններ է կոդավորված օգտագործելով meta-նիշ. Հիմնական լեզուն metacharacter է backslash - "\": Այն փոխում է տեսակի հաջորդող նիշ հակառակը (այսինքն. E. Դարձրած շարքային բնավորությունը քարտով եւ հակառակը): Մեկ այլ կարեւոր metacharacter մի ուղիղ գիծ «|», սահմանում է այլընտրանքային ձեւանմուշ. Լրացուցիչ օրինակները meta-հերոսների:

^ Սկսել օբյեկտը կամ տողը
( սկսել subpattern
) end subpattern
{ սկիզբը quantifier
} end quantifier
\ դ տասնորդական նիշ 0-ից 9
\ D ցանկացած բնույթի, որ ոչ մի շարք
\ ի դատարկ խորհրդանիշ, տարածություն, էջանիշը,
\ Վտ խորհրդանիշ բառարան

PHP, վերամշակման կանոնավոր արտահայտություններ, տիեզերական դիտարկվի որպես առանձին վավեր բնույթ, ուստի արտահայտությունն XYZ եւ ABC Որտեղ տարբեր են:

subpatterns

Ի PHP կանոնավոր subpatterns կողմից փակագծերով, եւ նրանք երբեմն կոչվում է «subexpressions»: Իրականացնում է հետեւյալ գործառույթները.

  1. Տեղաբաշխման այլընտրանքների. Օրինակ, ջերմային օրինակը (մի բան, | Bird |) համընկնում բառերի «շոգին», «Firebird" եւ "տաք": Եւ առանց փակագծերում, դա կլինի միայն դատարկ տողը, «թռչնի» եւ «տաք»:

  2. «Տպավորիչ» subpattern: Սա նշանակում է, որ եթե այդ օրինակը համապատասխանում նիշը, ապա վերադառնում է բոլոր հանդիպումները: Պարզության համար, մենք տալիս ենք մի օրինակ. Հաշվի առնելով հետեւյալ կանոնավոր արտահայտություն: հաղթողը ստանում ((ոսկու | ոսկի plated) (մեդալն | բաժակ)) - եւ լարային համար հանդիպումներում », - հաղթողը ստանում է ոսկե մեդալ:»: Ի լրումն նախնական արտահայտության, որ որոնման արդյունքները կտրամադրվեն: «Ոսկե հուշամեդալով», «մեդալներ», «ոսկե».

Օպերատորներ կրկնողություններից (kvadrifikatory)

Կազմելիս հերթական արտահայտությունը հաճախ անհրաժեշտ է վերլուծել կրկնությունը թվերի եւ խորհրդանիշներ. Սա խնդիր չէ, եթե ոչ շատ կրկնողություններից: Բայց այն, ինչ պետք է անել, երբ մենք չգիտենք, թե նրանց հստակ թիվը: Այս դեպքում անհրաժեշտ է օգտագործել հատուկ metacharacters:

Նկարագրության կրկնողություններից օգտագործվող kvadrifikatory - metacharacters է նշեք համարը: Kvadrifikatory են երկու տեսակի:

  • տարածված է փակագծերում:
  • նվազել է.

Ընդհանուր առմամբ quantifier զգացված նվազագույն եւ առավելագույն թվով թույլ է տվել կրկնողություններից տարրի ձեւով երկու համարների braces, ինչպիսիք են x {2,5}. Եթե առավելագույն թվով կրկնողություններից հայտնի չէ, երկրորդ փաստարկը դեռեւս հստակեցված չէ: X {2}:

Կրճատ quantifiers են խորհրդանիշներ համար առավել տարածված կրկնողություններից խուսափելու ավելորդ գերբեռնվածության շարահյուսություն: Սովորաբար կան երեք կրճատումներ:

1. * զրո կամ ավելի կրկնողություններից, ինչը համարժեք է {0,}.

2. + - մեկ կամ ավելի կրկնողություններից, այսինքն, {1} ...

3.? - զրո, կամ միայն մեկ կրկնում {0,1}.

Օրինակներ կանոնավոր

Նրանց համար, ովքեր սովորում կանոնավոր արտահայտություններ, օրինակ - լավագույն դասագրքի: Մենք տալիս ենք մի քանի տարբերակներ, որոնք ցույց են տալիս, իրենց հնարավորությունները, ինչպես նաեւ առնվազն ջանք. Բոլոր կոդը լիովին համատեղելի տարբերակները PHP 4.x եւ բարձր. Է լիովին հասկանալ շարահյուսական եւ օգտագործման բոլոր լեզվական առանձնահատկությունները խորհուրդ ենք տալիս գիրքը J .. Friedl, «կանոնավոր արտահայտություններ», որը լիովին համարվում շարահյուսական, եւ կան օրինակներ, կանոնավոր արտահայտություններ ոչ միայն PHP, այլեւ մի Python, Perl, MySQL, Java, Ruby, եւ C #.

Վավերացում E-mail հասցե

Խնդիր է. Կա ինտերնետ էջ, որի վրա այցելուն խնդրվում հասցեն նամակ. Կանոնավոր արտահայտություն պետք է ստուգել, որ հասցեներով նախքան ուղարկելը հաղորդագրությունները. Ստուգումը չի երաշխավորում, որ նշված փոստարկղը, ըստ էության, գոյություն չունի, եւ ստանում Հաղորդագրություններ: Բայց մաքրելու ակնհայտ սխալ հասցեներ, այն կարող է.

Որոշումը: Ինչպես ցանկացած ծրագրավորման լեզու է, PHP կանոնավոր Փոստի հասցե ստուգման կարող է իրականացվել տարբեր ձեւերով, եւ օրինակները այս հոդվածում չեն վերջնական եւ միակ ընտրությունը: Հետեւաբար, յուրաքանչյուր դեպքում, մենք պետք է ապահովի ցուցակը պահանջների, որոնք պետք է հաշվի առնել, երբ ծրագրավորման եւ կոնկրետ իրականացումը ամբողջությամբ կախված է մշակողի.

Այսպիսով, արտահայտությունը, որը ստուգում է վավեր էլեկտրոնային նամակ, պետք է ստուգել հետեւյալ պայմանները.

  1. Ներկայությունը է մեկնարկային գծի @ խորհրդանիշ, եւ չկան բացթողումներ.
  2. Տիրույթը մասը հասցեն @ խորհրդանիշ, պարունակում է միայն վավեր նիշ է դոմենային անունների. Նույնը վերաբերում է օգտագործողի անունով:
  3. Երբ ստուգում է Մականունը անհրաժեշտ է որոշելու ներկայությունը հատուկ նիշերի, ինչպիսիք են ապաթարցով կամ ուղղահայաց տողով. Նման խորհրդանիշներ են պոտենցիալ վտանգավոր է եւ կարող է պարունակվում այնպիսի տեսակի հարձակումներից, որ SQL ներարկման. Խուսափել հասցեները:
  4. օգտանունները թույլ են տալիս միայն մեկ կետ, որը չի կարող լինել առաջինը կամ վերջին հերոսն է պարանի:
  5. Domain name դաշտում պետք է պարունակի առնվազն երկու եւ ոչ ավելի, քան վեց նիշ:

Օրինակ, հաշվի առնելով բոլոր այդ պայմաններում կարող է տեսնել հետեւյալ գործիչ.

Վալիդացման URL- ը

Խնդիր է. Ստուգեք, թե արդյոք նշված տեքստը լարային վավեր հասցե URL: Կրկին, մենք նշում ենք, որ կանոնավոր արտահայտություններ URL ստուգում կարող է իրականացվել տարբեր ձեւերով:

Որոշումը: Մեր վերջնական տարբերակը հետեւյալն է.

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

Այժմ վերլուծել դրա բաղադրիչները ավելի մանրամասնորեն, օգտագործելով նկարչություն.

պահանջը 1 Նախքան URL չպետք է ունենա որեւէ նիշ
Claim 2 Ստուգեք ներկայությունը պարտադիր նախածանցի «http»
տարրը 3 Այնտեղ պետք է լինի ոչ խորհրդանիշները
Claim 4 Եթե կա «ի», իսկ URL միավոր ապահով կապի «HTTPS»
Claim 5 Պահանջվող մասը «//»
Claim 6 Ոչ նիշ
էջ 7-9 Հաստատող առաջին մակարդակի դոմեն ու ներկայությունը կետի
p.10-13 Հաստատող տիրույթում գրավոր երկրորդ մակարդակը եւ շեղվող
p.14-17

Ֆայլի կառուցվածքը URL մի շարք թվերի, տառերի ընդգծման, խորտակեց, dots, եւ վերջում թեք նշանի

Ստուգեք կրեդիտ քարտի համարները

Խնդիր է. Դուք պետք է իրականացնել վավերացման Մուտքագրված վարկային քարտի համարը ամենատարածված վճարային համակարգերով: Մի տարբերակ միայն Ծանոթություններ Visa եւ MasterCard.

Որոշումը: Երբ ստեղծել արտահայտությունը դուք պետք է հաշվի առնել, որ հնարավոր ներկայությունը բացերից մուտքագրման սենյակում: Որ թվեր քարտեզի վրա բաժանվում են խմբերի համար ավելի հեշտ կարդալու եւ թելադրանքով. Հետեւաբար, դա բնական է, որ անձը կարող է փորձել է մտնել մի շարք այս կերպ (այսինքն. E. Օգտագործելով բացատների).

Գրել է համընդհանուր արտահայտությունը, որը հաշվի է առնում հնարավոր բացատների կամ գծիկներով, շատ ավելի բարդ է, քան պարզապես դեն նետել բոլոր կերպարները, բացառությամբ թվանշանների. Հետեւաբար, խորհուրդ ենք տալիս օգտագործել խմբային նիշ արտահայտությունը / D, որը հեռացնում է բոլոր նիշ, բացառությամբ թվանշանների.

Այժմ դուք կարող եք գնալ անմիջապես չեկի համարը: Բոլոր ընկերությունները, վարկային քարտ թողարկողները օգտագործել եզակի թիվ ձեւաչափը: Իսկ, օրինակ, այն օգտագործվում է, եւ հաճախորդը չի պետք է մուտքագրեք անունը ընկերության այն որոշվում է մի շարք. Visa քարտերը միշտ սկսվում է թվերի 4 եւ ունեն երկարությունը 13 կամ 16 նիշ. MasterCard սկսվում է շարք 51-55 հետ երկար շարք 16 Արդյունքում, մենք ստանում է հետեւյալ արտահայտությունը.

Նախքան մշակման կարգը կարող է հետագայում փորձարկվել վերջին նիշերը թվի, որը հաշվարկվում է Luhn ալգորիթմի.

Հաստատող հեռախոսահամարը

Խնդիր է. Checking կոռեկտության մտել հեռախոսահամարով:

Որոշումը: Թվի թվանշանների ֆիքսված եւ բջջային հեռախոսահամարների զգալիորեն տարբերվել, կախված է երկրում, այնպես որ համընդհանուր ստուգեք օգտագործում կանոնավոր արտահայտություններ, հեռախոսահամարը ճիշտ անհնար է. Բայց միջազգային թվեր են խիստ ձեւաչափ է եւ կատարյալ ստուգելու օրինակին. Նույնիսկ ավելի, այնպես որ ավելի ու ավելի շատ ազգային հեռախոսային օպերատորները փորձում են բավարարել նույն չափանիշով: Սենյակի կառուցվածքը հետեւյալն է.

+ CCC.NNNNNNNNNNxEEEE, որտեղ,

C - այն երկիրն կոդը, որը բաղկացած է 1-3 թվերի:

- N - մինչեւ 14 թվանշանների.

- E - ըստ ցանկության ընդլայնում.

Գումարած անփոխարինելի տարր, իսկ նշանը X է միայն այն ժամանակ, երբ անհրաժեշտ է երկարաձգման.

Որպես հետեւանք, մենք ունենք հետեւյալ արտահայտությունը.

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

Որ թվեր են միջակայքում

Խնդիր է. Անհրաժեշտ է ապահովել, պատահականություն թիվ որոշակի տիրույթում: Ի լրումն, դա անհրաժեշտ է գտնել մի կանոնավոր արտահայտություն միայն թվերի միջակայքում:

Որոշումը: Այստեղ են մի քանի արտահայտություններ որոշ ամենատարածված դեպքերում:

Որոշելու, ժամ 1 - ից մինչեւ 24 ^ (1 [0-2] | [1-9]) $
Օրը ամսվա 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Վայրկյան կամ րոպե 0-59 ^ [1-5]: [0-9] $
Մի շարք 1 - ից 100 * (100 |? [1-9] [0-9]) $
Օրը Տարվա 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} | [1-9] [0-9]) $

Որոնել IP տրվել

Խնդիր է. Անհրաժեշտ է պարզել, թե արդյոք տրված տողը ը վավեր IP հասցե - ին IPv4 ձեւաչափով տատանվում 000.000.000.000-255.255.255.255:

Որոշումը: Ինչպես ցանկացած խնդրի լեզվով PHP, հերթական արտահայտությունը ունի բազմաթիվ varintov: Օրինակ, այս:

Առցանց ստուգում արտահայտություններով

Ստուգեք RegEx ճիշտ սկսնակների համար կարող է դժվար լինել, քանի որ բարդության syntax, որը տարբերվում է «հերթական» ծրագրավորման լեզուներով. Որպեսզի լուծել այս խնդիրը, կան բազմաթիվ օնլայն testers արտահայտությունները, որոնք դարձնել այն հեշտ է ստուգել Կաղապար եք ստեղծել է իրական տեքստում: Ծրագրավորող մտնում արտահայտությունը եւ ստուգման տվյալների եւ անմիջապես տեսնել արդյունքը վերամշակման. Սովորաբար կա ներկայացնել տեղեկանք բաժինը, որը հանգամանորեն կանոնավոր արտահայտություններ, օրինակներ եւ իրականացման տարբերությունները համար առավել ընդլայնված լեզուներով:

Բայց պետք է լիովին վստահել օնլայն ծառայությունների արդյունքները խորհուրդ չի տրվում բոլոր մշակողների, ովքեր օգտագործում են PHP: Հերթական արտահայտությունը գրված է եւ ստուգված է անձի, բարձրացնում որակավորում եւ երաշխավորում բացակայությունը սխալներով.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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