Компютер, Барномасозӣ
PHP (regex) - чӣ аст? Намунаҳои ва санҷиши ифодаҳои мунтазам
Вақте ки кор бо матн дар ҳама гуна забони барномасозии муосир, таҳиягарон доимо бо мақсадҳои тасдиќи вуруди барои риояи намунае дилхоҳ ҷавобгӯ, ҷустуҷӯ ва иваз оҳанпора санҷиш ва дигар намудҳои амалиёти коркарди иттилоот хусусияти. Таҳияи алгоритме, тасдиќи худро боиси аз даст додани замон, мутобиқати Рамзи ва мураккабии дар рушд ва такомули он.
Рушди босуръати Интернет ва WEB-дизайн забонҳои бо ҳадди ақали маблағи зарурӣ барои ин коди талаб офариниши воситаҳои имрӯзӣ ва паймон коркарди матн. Ин истисно нест ва дар байни шурӯъкунандагон ва таҳиякунандагони касбии забони PHP машҳур аст. Забони Ифодаи мунтазаме, чун қолибҳои матни содда вазифаи ҳалли матн ва кам кардани рамзи барои даҳҳо ва садҳо хатҳои. Бисёре аз мушкилоти метавонанд дар ҳамаи бе на он мешавад, ҳал карда мешавад.
Натиҷаҳои Муқаррарӣ дар PHP
забони PHP се механизмњои кор бо ифодаҳои мунтазам - «ereg», «mb_ereg» ва «preg». Дар бештар маъмул интерфейси «preg», ки вазифаҳои таъмини дастрасӣ ба китобхона аз PCRE дастгирии ифодаи муқаррариро, аслан барои забони Perl аст, ки дар бастаи PHP дохил таҳия мешавад. Preg-ҷустуҷӯи вазифаҳо дар як муқоисаи сатри матн дода, тибқи як намунаи муайяни ба забони ифодаи муқаррариро.
Асосҳо наҳвӣ
Ҳамчун як қисми мақолаи нопурра аз он имконнопазир аст, ба тасвир муфассал тамоми наҳвӣ ифодаи муқаррариро, барои ин аст, ки адабиёти махсус вуҷуд дорад. Мо пешниҳод танҳо унсурҳои асосии нишон имкониятҳо барои таҳиякунанда ва дарк намунаҳои рамз аст.
Дар PHP ифодаи муқаррарӣ расман муайян хеле мушкил, ва аз ин рӯ содда тавсифи. Ифодаи мунтазаме, сатри матн аст. Он аз як Шаблон ҷудосози бахшидашуда ва дигаргуна, бо нишон додани роҳи ба ӯҳдаи он иборат аст. дохил намудан имконпазир дар алтернативаҳои гуногуни ва такророти аз шакли.
Барои мисол, дар ифодаи / \ г {3} - \ г {2} - \ г {2} / м ҳакам аст »/», ки пас аз ба Шаблон, ва рамзи «м», ки дигаргуна аст.
Ҳамаи қувваи ифодаи муқаррариро, криптографии истифода мета-аломат. "\" - The metacharacter забони асосии backslash аст. Ин тағйир намуди аломатҳои зеринро дар муқобил (яъне. E. ба як корти хусусияти оддӣ ва баръакс табдил). Боз як metacharacter муҳим аст, як хати рост «|», ба Шаблон алтернативӣ муайян мекунад. намунаҳои бештар аз мета-аломатҳои:
| * | Оғози иншоот ё як сатр |
| ( | Оғози subpattern |
| ) | subpattern End |
| { | quantifier Start |
| } | quantifier End |
| \ г | рақама даҳӣ аз 0 то 9 |
| \ $ D | ба ҳамаи аломатҳои аст, ки як қатор нест, |
| \ и | рамзи холӣ, фазо, ба ҷадвали, |
| \ в | луғат рамзи |
PHP, коркарди ифодаҳои мунтазам, фазои ҳамчун аломати дуруст алоҳида баррасӣ, то изҳори XYZ ва ABC КУҶО гуногун мебошанд.
subpatterns
Дар PHP subpatterns мунтазам аз ҷониби қавс буда, ва онҳо баъзан «subexpressions» номида мешавад. Иҷрои вазифаҳои зерин интихоб кунед:
алтернативаҳои Таќсимоти. Масалан, намунаи гармии (чизе | Мурғи |) рост меояд, бо калимаҳои "гармӣ», «Firebird» ва «гарм». Ва бе ќавс он танҳо як сатри холӣ, «парранда» ва «гарм» аст.
"Тамошобоб" subpattern. Ин маънои онро дорад, ки агар намуна зерсатрро мувофиқашуда, пас ҳама гугирд бар мегардонад. Зеро ки возеіият, мо намунаи дод. Бо назардошти ифодаи муқаррарӣ зерин ғолиби мегирад ((тилло | тилло plated) (медали | коса)) - ва сатри барои гугирд, "ғолиби меорад медали тилло». Илова бар ин, ба ибораи аввал, натиҷаҳои ҷустуҷӯ дода хоҳад шуд: «медали тилло», «медали», «тилло».
Операторони такророти (kvadrifikatory)
Дар тартиб додани ифодаи муқаррарӣ аст, вақт лозим барои таҳлил намудани такрори рақамҳо ва рамзҳо. Ин аст, ки мушкилот, агар на бисёр такророти нест. Аммо чӣ бояд кард, ки мо мекунем, шумораи аниқи худро намедонанд? Дар ин ҳолат зарур аст, ки ба истифода metacharacters махсус.
Барои тавсифи такророти истифода kvadrifikatory - metacharacters барои муайян кунед. Kvadrifikatory ду навъи мебошанд:
- умумӣ дар қавсайн;
- кам карда шавад.
quantifier Дар маҷмӯъ ламс аз рӯи шумораи ҳадди ақал ва ҳадди унсури такророти иҷозат дода, дар шакли ду адад дар Мисолҳои, ба монанди х {2,5}. Агар шумораи њадди такророти маълум нест, далели дуюм аст, нишон дода намешавад: х {2}.
quantifiers кӯтоҳи рамзи барои маъмултарини такророти бо мақсади пешгирии наҳвӣ overloading нолозим мебошанд. Одатан се захмро нест:
1. * - сифр ё зиёда, такророти, аст, ки баробар ба {0}.
2. + - як ё якчанд такророти, яъне, {1} ...
3.? - сифр ё танҳо як такрор - {0,1}.
намунаҳои regex
Барои онон, ки ёд ифодаҳои мунтазам, намунаҳои - беҳтарин китобҳои дарсӣ. Хоҳем дод ва чанд, ки имкониятҳои худро нишон бо камтарин кӯшиши. Ҳамаи Рамзи пурра шакл 4.x PHP ва боло мувофиқ аст. Барои пурра фаҳмидани наҳвӣ ва истифодаи ҳамаи хусусиятҳои забони тавсия мо китоби J .. Friedl, «ифодаҳои мунтазам", ки пурра наҳвӣ баррасӣ ва намунаҳои ифодаҳои мунтазам, на танҳо PHP, балки низ барои як Python, Perl, MySQL, Java, Руби, ва C # ҳастанд.
Тасдиқи E-суроғаи почтаи
Вазифаи. аст, саҳифаи интернетӣ, ки дар он меҳмон аст, дархост почтаи суроғаи нест. Ифодаи мунтазаме, бояд дурустии суроғаҳои пеш аз фиристодани паёмҳо, санҷед. Санҷиши кафолат намедиҳад, ки паёмдони муайян воқеан вуҷуд дорад ва паёмҳои мегирад. Лекин алафҳои бегона аз суроғаҳои баръало нодуруст он метавонад.
Қарори. Тавре ки бо ягон забони барномасозӣ, дар PHP тафтиши почтаи-суроғаи regex мумкин аст бо роҳҳои гуногун амалӣ, ва намунаҳои дар ин мақола мебошанд интихоби ниҳоӣ ва танҳо нест. Аз ин рӯ, дар ҳар сурат, мо ба номгўи талаботи, ки бояд ба инобат гирифта шавад, вақте ки барномасозон ва татбиқи мушаххас вобаста пурра ба таҳиякунанда таъмин намояд.
Ҳамин тариқ, баён, ки ба озмоиш як мӯътабари почтаи электронӣ, бояд шартҳои зерин санҷед:
- Ҳузури дар сар хатти @ рамзи ба, ва ҳеҷ шикофе дар он ҷо.
- Дар қисми самти суроғаи @ рамзи ин, шомили фақат ҳарфҳои боэътибор барои номҳои домейнҳо. Дар ҳамин дахл дорад, ба номи корбар дорад.
- Вақте ки санҷиши номи корбарӣ ва барои муайян кардани ҳузури аломатҳои махсус зарур аст, ба монанди як апостроф ё хати амудӣ. Чунин аломатҳои эҳтимолан хатарнок аст ва мумкин аст дар чунин намуди ҳамла, ки SQL-тазриќї дармегиронад. Нагузоред, адресҳо роҳ медиҳад.
- гузарвожаҳо имкон танҳо як чиз, ки метавонад аломати аввал ё охир дар сатри нест.
- Номи домен бояд дар на камтар аз ду ва на зиёдтар аз шаш аломат дошта бошад.
Мисол, бо назардошти ҳамаи ин шароит мумкин аст дар ҷадвали зерин дида.
Тасдиқи як URL
Вазифаи. Санҷед, ки оё сатр матн муайян як дуруст аст, URL адреси. Бори дигар, ки мо қайд кард, ки ифодаҳои мунтазам URL-тафтишоти мумкин аст бо роҳҳои гуногун амалӣ карда мешавад.
Қарори. Нусхаи ниҳоии мо ин аст, иборатанд аз:
/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /
Акнун ҷузъҳои он ба таври муфассал бо истифода аз расм таҳлил менамояд.
| 1 | Пеш аз он ки URL бояд ягон аломат нест, |
| Талабномаи 2 | Санҷед ҳузури пешванди ҳатмӣ «HTTP» |
| ѕисми 3 | бояд на рамзҳо вуҷуд дошта бошад |
| Талабномаи 4 | Агар «ҳо», нуқтаҳои URL ба пайвасти таъминшуда «HTTPS» |
| Талабномаи 5 | қисми ҳатмӣ дар "//" |
| Талабномаи 6 | Не ҳарфҳои |
| саҳ. 7-9 | Тасдиќкунандаи домени дараҷаи аввал ва мавҷудияти банди |
| p.10-13 | Тасдиқ самти навиштани сатҳи дуюм ва нуқтаи |
| p.14-17 | URL сохтори File - маҷмӯи рақамҳо, номаҳо, underscores, dashes нуқтаҳои, ва рамзи слэш дар охири |
Санҷед, рақамҳои корти қарзӣ
Вазифаи. Шумо бояд ба амалӣ намудани тасдиќи дохил рақами корти қарзӣ дар низоми пардохт бештар маъмул. A Варианти танҳо барои кортҳои Visa ва MasterCard.
Қарори. Вақте ки ташкили баён ба шумо лозим аст ба инобат гирифта ҳузури эҳтимолии камбудиҳои дар утоқи вуруди аст. Дар адади дар харита ба гурӯҳҳои барои хондан ва амр осонтар тақсим карда мешавад. Аз ин рӯ, табиист, ки як шахс метавонад кӯшиш ба ворид кардани рақами дар ин роҳ (яъне. E. Бо истифода аз ҷойҳои).
Навиштани изҳори универсалӣ, ки ба инобат мегирад, ҷойҳои имконпазир ё hyphens, мураккаб аст аз танҳо ғайри рақам меоварад ҳама ҳуруфот. Аз ин рӯ, тавсия мо бо истифода аз ибораи корти / D, ки дур аз ҳама аломатҳо ба истиснои рақам.
Акнун Шумо метавонед бевосита ба рақами чек рафта. Ҳамаи ширкатҳои issuers корти қарзӣ истифода формати рақами беназир. Дар мисоли он истифода бурда мешавад, ва муштарӣ лозим нест барои ворид кардани номи ширкат - он аст, аз рӯи шумораи муайян карда мешавад. кортҳои Visa ҳамеша бо рақамҳои 4 сар ва дарозии 13 ё 16 рақам. MasterCard дар доираи 51-55 бо шумораи дароз 16. Дар натиҷа шурӯъ мешавад, ки мо баён зерин пайдо намоед:
Пеш аз он ки коркарди тартиби мумкин аст дар оянда ба охир адади шумораи аст, ки дар бораи алгоритми Luhn њисоб санҷида.
Санљиши рақами телефон
Вазифаи. Тафтиши дурустии рақами телефон дохил карда мешавад.
Қарори. Дар шумораи рақамҳое, ки дар телефонҳои собит ва сайёр фарқ хеле вобаста аз кишвар, то умум, санҷед истифодаи ифодаҳои мунтазам, рақами телефони дуруст ғайриимкон аст. Аммо рақамҳои байналмилалӣ доранд, дар як шакли сахт ва комил барои тафтиши намунае. Ҳатто бештар, то ки бештар ва бештар операторони телефонҳои миллӣ кӯшиш барои қонеъ кардани стандарти ҳамин. Сохтори Room чунин аст:
+ CCC.NNNNNNNNNNxEEEE, ки дар он:
- C - рамзи мамлакат иборат аз 1-3 рақам аст.
- N - шумораи то 14 рақам.
- E - тамдиди ҳатмӣ.
Plus унсури ивазнашаванда мебошад, ва аломати X мазкур танҳо тамдиди лозим аст.
Дар натиҷа мо ифодаи зерин:
^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (?. Х +)? $
Дар рақамҳо дар доираи
Вазифаи. Он барои таъмини бутуни тасодуф як қатор муайян зарур аст. Илова бар ин, зарур аст, ки ба пайдо кардани ифодаи муқаррарӣ танҳо рақамҳои аз намуди диапазони.
Қарори. Дар ин ҷо якчанд изҳори ки ба баъзе аз ҳолатҳо бештар маъмул аст:
| Муайян соат аз 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 дуруст барои шурӯъкунандагон душвор буда метавонад, зеро аз мураккабии наҳвӣ, ки аз «мунтазам» забонҳои барномасозӣ фарқ мекунад. Барои ҳалли ин мушкилот, бисёр ибораҳое testers онлайн, ки он ба осонӣ ба тафтиши дурустии Шаблон шумо дар матни воқеӣ офарида аст. Дар барномасоз медарояд баён ва тафтиши маълумотњо ва саривақт натиҷаи коркарди дид. Одатан аст, пешниҳод фасли истинод, ки муфассал дар ифодаҳои мунтазам, намунаҳои ва фарқиятҳо татбиқи барои забонҳои дароз бештар нест.
Аммо ба хизматрасониҳои онлайн пурра такя ба натиҷаҳои барои ҳамаи таҳиягарон истифода PHP тавсия дода намешавад. Ифодаи мунтазаме, ки навишта шудааст ва санҷида шахсан, ба миён ихтисос ва кафолат набудани хатоҳои.
Similar articles
Trending Now