Համակարգիչներ, Ծրագրավորում
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»: Իրականացնում է հետեւյալ գործառույթները.
Տեղաբաշխման այլընտրանքների. Օրինակ, ջերմային օրինակը (մի բան, | Bird |) համընկնում բառերի «շոգին», «Firebird" եւ "տաք": Եւ առանց փակագծերում, դա կլինի միայն դատարկ տողը, «թռչնի» եւ «տաք»:
«Տպավորիչ» 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 կանոնավոր Փոստի հասցե ստուգման կարող է իրականացվել տարբեր ձեւերով, եւ օրինակները այս հոդվածում չեն վերջնական եւ միակ ընտրությունը: Հետեւաբար, յուրաքանչյուր դեպքում, մենք պետք է ապահովի ցուցակը պահանջների, որոնք պետք է հաշվի առնել, երբ ծրագրավորման եւ կոնկրետ իրականացումը ամբողջությամբ կախված է մշակողի.
Այսպիսով, արտահայտությունը, որը ստուգում է վավեր էլեկտրոնային նամակ, պետք է ստուգել հետեւյալ պայմանները.
- Ներկայությունը է մեկնարկային գծի @ խորհրդանիշ, եւ չկան բացթողումներ.
- Տիրույթը մասը հասցեն @ խորհրդանիշ, պարունակում է միայն վավեր նիշ է դոմենային անունների. Նույնը վերաբերում է օգտագործողի անունով:
- Երբ ստուգում է Մականունը անհրաժեշտ է որոշելու ներկայությունը հատուկ նիշերի, ինչպիսիք են ապաթարցով կամ ուղղահայաց տողով. Նման խորհրդանիշներ են պոտենցիալ վտանգավոր է եւ կարող է պարունակվում այնպիսի տեսակի հարձակումներից, որ SQL ներարկման. Խուսափել հասցեները:
- օգտանունները թույլ են տալիս միայն մեկ կետ, որը չի կարող լինել առաջինը կամ վերջին հերոսն է պարանի:
- 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