КомпьютерлерБағдарламалау

PHP (Regex) - бұл не? Мысалдары және тексеру тұрақты өрнектер

кез келген заманауи бағдарламалау тілінде мәтінмен жұмыс кезінде, әзірлеушілер үнемі сынау фрагменттері және сипаты ақпарат қайта өңдеу жөніндегі операцияларды басқа да түрлерін іздеу және ауыстыру, қажетті үлгі сәйкестігіне кіріс валидация мақсаттарына кездеседі. өз тексеру алгоритмдерін әзірлеу, уақыт жоғалту оның дамуы мен жаңғырту коды үйлесімділігін және күрделілігі әкеледі.

жылдам Интернет дамыту және WEB-дизайн тілдері осы Кодексте үшін қажетті ең төменгі сомасы мәтін өңдеу әмбебап және жинақы құралдарын құруды талап етті. Бұл ешқандай ерекшелік болып табылады және бастауыш және PHP тілі кәсіби әзірлеушілер арасында танымал. мәтінді өңдеу тапсырманы жеңілдету және ондаған және желілерін жүздеген кодын азайту мәтін үлгілер ретінде тұрақты өрнек тілі. Көптеген проблемалар онсыз барлық шешу мүмкін емес.

PHP үлгі өрнектер

«Ereg», «mb_ereg» және «өзімізге» - PHP тілі үш тұрақты тіркестерін жұмыс істеу үшін тетіктері бар. Ең көп таралған интерфейс «өзімізге», кімнің функциялары бастапқыда PHP пакетіне қосылған Perl тілі үшін әзірленген PCRE тұрақты өрнек қолдау кітапхана, қол жеткізуді қамтамасыз ету болып табылады. , Берілген мәтін жолы сәйкестік функцияларды өзімізге-іздеп тұрақты тіркестерін тілінде белгілі бір өрнекке сәйкес.

синтаксис негіздері

қысқа баптың бөлігі ретінде бұл үшін арнайы әдебиет бар, егжей-тегжейлі барлық тұрақты өрнек синтаксисі сипаттау мүмкін емес. Біз әзірлеуші үшін мүмкіндіктер көрсету және коды мысалдар түсіну ғана негізгі элементтері болуы.

PHP үлгі өрнектің формальды өте қиын анықталады, сондықтан сипаттамасы жеңілдетуге болады. Үлгі өрнегі мәтіндік жол болып табылады. Ол арнайы бөлгіш үлгісінде және оны өңдеуге жол көрсете модификаторы тұрады. заңдылықтарын түрлі баламаларды және қайталау Мүмкін қосу.

Мысалы, өрнек / \ г {3} - \ D {2} - \ D {2} / м бөлгіш «/», үлгіден кейін болып табылады, және символы «м» модификаторлар болып табылады.

тұрақты тіркестерін Барлық электр мета-таңбаларын пайдаланып кодталады. «\» - негізгі тіл метасимвол кері қиғаш сызық болып табылады. Ол қарама-қарсы (яғни. E. кәдімгі сипаты қойылмалы таңба және керісінше айналады) бойынша таңбалар мынадай түрін өзгертеді. Тағы бір маңызды метасимвол түзу сызық «|», баламалы үлгісін көрсетеді. мета-таңбалардың Толығырақ мысалдар:

^ нысанды немесе жолды бастаңыз
( subpattern бастаңыз
) соңы subpattern
{ квантора бастаңыз
} соңы квантор
\ D 0-ден 9-дан ондық сан
\ D сан емес, кез келген таңбалар
\ с бос символы, ғарыш, қойындысы,
\ W символы сөздік

жеке жарамды сипаттағы, сондықтан әр түрлі XYZ және ABC білдіру ретінде қарастырылады PHP, өрнектерді өңдеу, ғарыш.

subpatterns

Жақша арқылы PHP тұрақты subpatterns жылы, олар кейде «subexpressions» деп аталады. келесі функцияларды орындайды:

  1. Бөлу балама. Мысалы, жылу үлгісі (бір нәрсе | Bird |) деген сөздер «жылу», «Бақыт құсы» және «ыстық» сәйкес келеді. Ал жақшасыз ол тек бос жол, «құс» және «ыстық» болмақ.

  2. «Әсерлі» subpattern. Бұл үлгі үзіндісін қанағаттандырады, егер, онда барлық матчтары қайтарады дегенді білдіреді. Түсінікті болуы үшін, біз мысал келтірейін. мынадай тұрақты өрнек ескере: (| алтын жалатылған) (медалімен | (алтын тостаған)) жеңімпазы алады - және сәйкестіктерді жол, «жеңімпазы алтын медаль алады.» бастапқы фразаға Сонымен қатар, іздеу нәтижелері шығарылады: «Алтын медалі», «медальдарымен», «алтын».

Операторлар қайталауға (kvadrifikatory)

өрнек жасауда сандар мен нышандар қайталау талдау жиі қажет. Бұл проблема, егер қайталауға көп емес. Бірақ біз олардың нақты санын білмеймін, қашан істеу керек? Бұл жағдайда ол арнайы таңбаларды қамтиды пайдалану қажет.

санын көрсету үшін Метасимволы - kvadrifikatory пайдаланылатын қайталауға сипаттамасы үшін. Kvadrifikatory екі түрі бар:

  • жақшада ортақ;
  • төмендеген.

ең төменгі және осындай х {2,5}, мәнерлеп жақшаға екі сандар түрінде рұқсат қайталауға элементтің ең көп саны тебірентті Жалпы квантор. қайталану ең көп саны белгілі емес болса, екінші аргумент көрсетілген етілмейді: х {2}.

Қысқартылған кванторы қажетсіз шамадан тыс жүктелуі синтаксисті болдырмау мақсатында қайталану ең таралған үшін рәміздер болып табылады. Әдетте үш кесіп бар:

1. * - нөл немесе одан көп қайталауын, {0} баламалы болып табылатын.

2. + - бір немесе бірнеше қайталауға, яғни, {1} ...

3.? - нөл немесе бір ғана қайталап - {0,1}.

мысалдары Regex

өрнектерді үйрену үшін, кім мысалдар - үздік оқулығы. Біз аз күш өз мүмкіндіктерін ашып, бұл бірнеше келтіреміз. Барлық коды PHP 4.x және жоғарыда нұсқаларымен толық үйлесімді. толық біз толық синтаксис саналады «тұрақты білдіру», J .. Friedl кітабын ұсынамыз, және PHP, бірақ сондай-ақ Python, Perl, MySQL, Java, Ruby, және C # үшін ғана емес, тұрақты тіркестерін мысалдары бар барлық тілдік ерекшеліктерін синтаксисі мен пайдалануы түсіну үшін.

Тексеру Электрондық пошта мекен-жайы

Тапсырма. Келушілерге мекенжайы электрондық пошта сұраған, онда интернет беті бар. Тұрақты өрнек хабарларды жіберер алдында мекенжайлары дұрыстығын тексеру керек. Тексеру көрсетілген пошта жәшігі шын мәнінде бар және хабарламаларды қабылдайды кепілдік бермейді. Бірақ бұл мүмкін анық дұрыс мекенжайларын отсеять.

Шешім. кез келген бағдарламалау тілінде сияқты, PHP жылы Regex электрондық пошта мекенжайы тексеру түрлі тәсілдермен жүзеге асырылуы мүмкін, және осы бапта мысалдар түпкілікті және жалғыз шешім емес болып табылады. Сондықтан, әр жағдайда, біз бағдарламалау және нақты іске асыру әзірлеуші толығымен байланысты кезінде назарға алынуы қажет талаптар тізімін қамтамасыз етеді.

Осылайша, жарамды электрондық пошта тексерулері өрнек, мынадай шарттарды тексеру керек:

  1. оталдыру қатысуы @ символы желісі, және ешқандай кемшіліктер бар.
  2. @ Символы мекенжайының домен бөлігі, домендік атауларды үшін ғана жарамды таңбаларды қамтиды. сол пайдаланушының аты қолданылады.
  3. Логинді тексеру кезінде мұндай апострофы немесе тік сызық сияқты арнайы таңбаларды болуын анықтау қажет. Мұндай рәміздер ықтимал қауіпті болып табылады және SQL-бүрку деп шабуылдар мұндай түрлері болуы мүмкін. мекенжайларын жол бермеңіз.
  4. пайдаланушы аттары жолдың бірінші немесе соңғы таңба болмауы мүмкін, ол бір ғана нүктесін мүмкіндік береді.
  5. домен аты алты таңбадан кем дегенде екі және одан да көп емес болуы тиіс.

Мысал, бұл жағдай барлық келесі суретте көруге болады ескере отырып.

бір URL мекенжайының валидациясы

Тапсырма. көрсетілген мәтіндік жол жарамды екенін тексеріңіз мекенжай URL. Тағы да, біз тұрақты білдіру URL-тексеру түрлі жолдармен іске асырылуы мүмкін екенін ескеріңіз.

Шешім. төмендегідей Біздің түпкілікті нұсқасы:

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

Енді сызбасын пайдалана отырып, егжей-тегжейлі оның компоненттерін талдау.

талап 1 URL кез келген таңбаларды болмауы тиіс алдында
Талап 2 міндетті префикс «HTTP» болуын тексеру
3-тармақ жоқ рәміздер болуы тиіс
Талап 4 бар «с», «HTTPS» қауіпсіз қосылу үшін URL ұпай болса
Талап 5 «//» талап етілетін бөлігі
Талап 6 жоқ кейіпкерлері
б. 7-9 Тексеру бірінші деңгейлі доменді және нүктесінде болуын
p.10-13 Екінші деңгейін жазу домен мен нүктесін тексеру
p.14-17

Файл құрылымы URL - бұл сандар жиыны, хаттар, астыңғы, сызықша, нүктелер және соңында қиғаш сызықты

несиелік карта нөмірлерін тексеріңіз

Тапсырма. Сіз ең көп таралған төлем жүйелерінің енгізілген несие картасының нөмірін тексерісін жүзеге асыру қажет. тек карточкалар үшін нұсқа Visa және MasterCard.

Шешім. өрнекті жасау кезінде назарға енгізу бөлмеде бос мүмкін болуын қажет. Картада сандар оңай оқу және диктант топтарға бөлінеді. Сондықтан, ол адам (яғни. E. бос орындарды пайдалану) осы жолмен нөмірін енгізу үшін тырысуға болады, бұл табиғи болып табылады.

назарға ықтимал бос орындарды немесе дефистерді қабылдайды әмбебап өрнек жазу, жай сандар басқа барлық таңбаларды алып тастаңыз астам күрделі болып табылады. Сондықтан, біз сандар басқа барлық таңбаларды жояды қойылмалы өрнек / D, пайдалануды ұсынамыз.

Енді сіз тексеру санына тікелей өтуге болады. Барлық компаниялар, несиелік карта эмитенттер бірегей сан пішімін пайдаланыңыз. Мысалы ол пайдаланылады, және клиент компанияның атын енгізу қажет емес - бұл саны бойынша анықталады. Visa карточкалары әрқашан сандар 4 басталады және 13 немесе 16 сан ұзындығы бар. MasterCard Нәтижесінде ұзақ бірқатар 16. отырып 51-55 диапазонында басталады, біз келесі өрнекті алуға:

тапсырысты өңдеу алдында одан әрі Лун алгоритм бойынша есептеледі санының, соңғы цифрын сынақтан болады.

Тексеру телефон нөмірі

Тапсырма. енгізілген телефон нөмiрiнiң дұрыстығын тексеру.

Шешім. сандар саны тіркелген және ұялы телефон нөмірлері телефон нөмірі дұрыс мүмкін емес, айтарлықтай елге байланысты әр түрлі болуы, сондықтан жұрт тұрақты өрнектерді пайдалану арқылы тексеру. Бірақ халықаралық нөмірлері қатаң пішімін және үлгісін тексеру үшін тамаша бар. Тіпті одан да көп, сондықтан көбірек ұлттық телефон операторлары сол стандартына сәйкес келетін тырысады деп. төмендегідей 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-адрестері

Тапсырма. Ол берілген жол 000.000.000.000-255.255.255.255 аралығында IPv4 форматында жарамды IP-мекенжайы болып табылады анықтау үшін қажет.

Шешім. PHP тілінде кез келген проблема сияқты, тұрақты өрнек көп varintov бар. Мысалы, бұл:

өрнектерді Онлайн тексеру

бастауыш дұрыс Regex тексеру, өйткені «тұрақты» программалау тілдері ерекшеленеді синтаксис, күрделі қиын болуы мүмкін. Бұл мәселені шешу үшін, сіз нақты мәтіндегі құрылған үлгісінің дұрыстығын тексеру жеңілдетеді көптеген онлайн сынақшыларды өрнектер бар. бағдарламашы өрнек және тексеру деректерді енгізеді және бірден өңдеу нәтижесін көріп отырмыз. Әдетте өрнектерді, мысалдар және ең ұзақ тілдер үшін іске асыру айырмашылықтарды деректемелері осы сілтеме бөлім бар.

Бірақ толық сенім онлайн қызметтер қорытындысы PHP пайдаланатын барлық әзірлеушілер үшін ұсынылады емес. Үлгі өрнегі жазбаша және жеке тексерілген, біліктілігін көтереді және қателер жоқтығын кепілі болып табылады.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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