KompyuterlarDasturlash

PHP (regex) - bu nima? Misollar va tekshirish oddiy so'zlar

har qanday zamonaviy dasturlash tilida matn bilan ishlash bo'lsa, Dasturchilar doimiy, kerakli naqsh muvofiqligini uchun kirish tekshirish maqsadlari bilan javob qidiruv va sinov parchalar va belgilar axborotni qayta ishlash operatsiyalari boshqa turdagi o'zgartiring. vaqt yo'qotilishi, uni rivojlantirish va modernizatsiya qilish kodi moslashuv va murakkabligi olib keladi o'z tasdiqlash algoritmlarni ishlab chiqish.

Internet va WEB-dizayn tillarni tez rivojlanishi, bu kod uchun zarur bo'lgan minimal miqdori bilan matn qayta ishlash, ko'p qirrali va ixcham vositalarini yaratish zarur. Bu hech qanday istisno va yangilar va PHP tilini professional Ishlab orasida mashhur. Matn andozalari sifatida muntazam ifoda tili matnni tashish vazifasini soddalashtirish va o'nlab va yuzlab bosqichlari uchun kod kamaytirish uchun. Ko'pchilik muammolar barcha u holda hal qilinishi mumkin emas.

PHP muntazam so'zlar

«Ereg», «mb_ereg» va «homiladorlik» - PHP tili muntazam so'zlar bilan ishlash uchun uch mexanizmlariga ega. eng keng tarqalgan interfeysi «homiladorlik», kimning vazifalari dastlab PHP To'plamga kiritilgan Perl tiliga, uchun ishlab chiqilgan PCRE muntazam ifoda qo'llab-quvvatlash, kutubxonasida kirish taqdim etiladi. Muntazam iboralar tilida ma'lum namunaga ko'ra, berilgan matnlar eşleşmesi vazifalarni homiladorlik-izlab.

sintaktik asoslari

qisqa moddaning bir qismi sifatida u maxsus adabiyot bor, bu uchun, butun muntazam ifoda sintaktik batafsil tasvirlab mumkin emas. Biz shaxslar uchun imkoniyatlar ko'rsatish va kodi misollar tushunish faqat asosiy elementlari taqdim.

PHP muntazam ifoda rasmiy juda qiyin belgilangan, va shuning uchun tavsifi soddalashtirish bo'ladi. A muntazam ifoda matn dizesidir. Bu bir bag'ishlangan separator andoza va uni idora qilish yo'lini ko'rsatib değiştiricisiyle iborat. naqsh turli muqobil va takrorlanish mumkin kiritish.

Misol uchun, so'z bilan / \ d {3} - \ d {2} - \ d {2} / m separator andoza ortidan, "/" dir, va belgisi «m» tugmalar birikmasi.

Muntazam iboralar barcha kuch meta-belgi yordamida kodlangan. "\" - asosiy til Huzur teskari egri chiziq bo'lishi hisoblanadi. Buning aksi haqida belgi quyidagi turini o'zgartiradi (ya'ni. E. oddiy belgi joker va aksincha aylantiriladi). «|», Muqobil jadvalini bildiradi yana bir muhim Huzur bir to'g'ri chiziq bo'ladi. meta-belgilar ko'p misollar:

^ ob'ektni yoki bir mag'lubiyatga boshlash
( subpattern boshlash
) End subpattern
{ Start nicelik
} End nicelik
\ d 0 dan 9 gacha o'nlik raqamli
\ D bir qator emas, har qanday belgi
\ s bo'sh ramzi, kosmik, tab,
\ w belgi lug'at

PHP, oddiy so'zlar, alohida amal belgi sifatida ko'rib kosmik, shuning uchun har xil xyz va ABC ifoda ishlash.

subpatterns

Qavslar tomonidan PHP muntazam subpatterns va ular ba'zan "subexpressions" deb ataladi. quyidagi funktsiyalarni amalga:

  1. Ajratish bilan bir qatorda. Masalan, issiqlik namuna (narsa | Qushlarning |) "Firebird» va «issiq», so'zlar "issiqlik" bilan bir vaqtga to'g'ri keladi. Va Qavslar holda u faqat bo'sh yengdi, "qush" va "issiq" bo'ladi.

  2. "Ajoyib" subpattern. Bu namuna Fransiyani mos bo'lsa, keyin Barcha kutilmaganda qaytib, degan ma'noni anglatadi. tushunarli bo'lishi uchun, biz bir misol berish. Quyidagi oddiy ifoda qilgan: - va o'yinda mag'lubiyatga, "g'olibi oltin medal oladi." g'olibi qabul (piyola) (oltin | | oltin medal () bilan qoplangan) dastlabki jumla tashqari, qidiruv natijalari beriladi: «Oltin medal», «medalni", "oltin".

Operatorlar qaytariqlar (kvadrifikatory)

muntazam ifoda tuzishda sonlar va belgilar takrorlanmasligini tahlil qilish ko'pincha zarur. Bu muammo, agar takrorlanish ko'p emas. biz ularning aniq sonini bilmayman Lekin nima qilish kerak? Bu holda u maxsus huzur foydalanish lozim.

sonini belgilash uchun huzur - kvadrifikatory ishlatiladigan takrorlanish bir izoh uchun. Kvadrifikatory ikki qismdir:

  • qavs ichida oddiy;
  • kamayadi.

Bunday x {2,5} sifatida Qavslar ichida ikki raqamlar, shaklida ruxsat qaytariqlar element minimal va maksimal soniga tekkan Bosh nicelik. takrorlanish maksimal soni ma'lum bo'lsa, ikkinchi argument belgilangan emas: x {2}.

Qisqartirilgan Quantifiers keraksiz o'rnatish sintaksisini oldini olish uchun takrorlanish eng keng tarqalgan ifodalaydi. Odatda, uch kesadi bor:

1. * - {0} uchun teng nol yoki undan ko'p qaytariqlar.

2. + - bir yoki bir necha qaytariqlar, ya'ni, {1} ...

3.? - nol yoki faqat bitta takrorlash - {0,1}.

misollar regex

Eng yaxshi darslik - oddiy so'zlar, misollar o'rganish qilganlar uchun. Biz, eng oz harakat bilan imkoniyatlarini ko'rsatish, deb bir necha bering. Barcha kodi yuqorida PHP 4.x va versiyalari bilan to'liq mos keladi. to'liq to'liq sintaktik ko'rib J .. Friedl, "oddiy so'zlar" bilan kitob tavsiya barcha til xususiyatlari sintaksisi va foydalanishni tushunish emas, balki faqat PHP, balki bir Python, Perl, MySQL, Java, Ruby, va C # uchun muntazam so'zlar misollar bor uchun.

Tekshirish E-mail manzili

Vazifa. mehmon manzili, elektron pochta talab bo'lgan bir internet sahifa mavjud. Muntazam ifoda xabarlar yuborishdan oldin manzili to'g'riligini tekshirish kerak. Tekshirish ko'rsatilgan pochta qutisi aslida mavjud va xabarlar qabul kafolat bermaydi. Lekin bu mumkin aniq noto'g'ri manzillar tashqariga o't.

Qaror. har qanday dasturlash tilida kabi, PHP regex email-manzili tekshirish turli xil yo'llar bilan amalga oshirilayotgan, va bu maqolada misollar final va faqat tanlov emas mumkin. Shuning uchun, har bir holatda, biz, dasturiy va aniq amalga oshirish ishlab chiquvchi butunlay bog'liq bo'lsa e'tiborga olinishi kerak talablari ro'yxatini beradi.

Shunday qilib, bir amal elektron pochta sinaydi ifoda, quyidagi shartlarni tekshirish kerak:

  1. ishga mavjudligi @ belgisini yib, va hech kamchiliklar bor.
  2. @ Ramzi manzili domen qismi, domen nomlari uchun faqat tegishli harflar o'z ichiga oladi. Shu foydalanuvchining nomi uchun amal qiladi.
  3. Foydalanuvchi nomi tekshirish qachon bunday chiqib ketish belgilari yoki vertikal chiziq kabi maxsus belgilar borligini aniqlash uchun zarur. Bunday ramzlar xavfli va SQL-in'ektsiya deb hujumlar turlari mavjud bo'lishi mumkin. manzillar saqlaning.
  4. foydalanuvchi ismi yengdi birinchi yoki oxirgi belgi bo'lishi mumkin emas, faqat bir nuqtasi, imkon beradi.
  5. domen nomi kamida ikki va ko'p bo'lmagan olti belgi bo'lishi lozim.

Misol, hisobga Bunday sharoitda har holda quyidagi rasmda ko'rish mumkin.

URL tekshirish

Vazifa. belgilangan matn tor bir amal yoki yo'qligini tekshiring manzili URL. Yana bir bor, biz oddiy so'zlar URL-tekshirish turli yo'llar bilan amalga oshirish mumkin, deb qayd.

Qaror. quyidagicha Bizning final versiyasi:

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

Endi uchunchi yordamida batafsil uning komponentlarini tahlil.

da'vo 1 URL belgi yo'q kerak oldin
da'vo 2 majburiy prefiks borligini tekshiring «http»
element 3 hech qanday belgilar bo'lishi kerak
da'vo 4 Agar u yerda «s», xavfsiz ulanish uchun URL ball «https»
da'vo 5 kerakli qismi "//"
da'vo 6 Hech belgilar
p. 7-9 Tekshirilmoqda birinchi darajali domen va nuqtasi mavjudligini
p.10-13 Ikkinchi darajasi va nuqtasini yozish domen tekshirilmoqda
p.14-17

Fayl tuzilishi URL - raqamlar, harflar, pastki, defis, nuqta majmui va oxirida bir egri chiziq

kredit karta raqamlari tekshiring

Vazifa. Siz eng keng tarqalgan to'lov tizimlari kirib kredit karta raqami aniqlash amalga oshirish kerak. faqat kartochkalar uchun variant Visa va MasterCard.

Qaror. ifoda yaratish qachon kiritish xonada hisobga bo'shliqlar mumkin mavjudligini olish kerak. xaritada raqam oson o'qish va aytib uchun guruhga bo'linadi. Shuning uchun, bir kishi (ya'ni. E. bo'sh foydalanish), bu yo'l bilan, bir qator kiritish uchun harakat qilib ko'rishingiz mumkin, deb tabiiy.

hisobga mumkin bo'lgan joylar yoki defis oladi universal ifodasini yozing, shunchaki raqamlar tashqari barcha harflar tashlab ko'proq murakkab. Shuning uchun, biz raqamlar tashqari barcha belgi olib tashlanadi Joker ifoda / d, foydalanish tavsiya.

Endi siz chek raqamiga to'g'ridan-to'g'ri borish mumkin. Barcha kompaniyalar, kredit karta emitentlar yagona raqam formatini foydalaning. Masalan u ishlatiladi, va mijoz kompaniya nomini kiritish kerak emas - u soni bilan aniqlanadi. Visa kartalari har doim raqamlar 4 bilan boshlanadi va 13 yoki 16 ta raqamdan uzunligi bor. MasterCard Natijada uzoq qator 16. bilan 51-55 oralig'ida boshlanadi, biz quyidagi ifoda olish:

buyurtma ishlash avval yanada Luhn algoritm hisoblanadi raqami, oxirgi raqamdan sinov bo'ladi.

Telefon raqami tekshirilmoqda

Vazifa. kirib telefon raqami to'g'ri nazorat qilish.

Qaror. Ruxsat etilgan va mobil telefon raqamlarini uy soni sezilarli shunday universal, telefon raqami to'g'ri imkonsiz muntazam ifodalar yordamida tekshirish, davlatga qarab o'zgaradi. Lekin xalqaro raqamlari naqsh tekshirish uchun qattiq format va mukammal bor. Hatto yanada ko'proq va ko'proq milliy telefon operatorlari bir xil standart qondirish uchun harakat, shunday qilib. quyidagicha Xona tuzilishi:

+ CCC.NNNNNNNNNNxEEEE, qaerda:

- C - 1-3 ta raqamdan iborat mamlakat kodi hisoblanadi.

- N - 14, shuncha yiqilib soni.

- E - ixtiyoriy kengaytirish.

Plus ajralmas elementi bo'lib, oyat-X uzaytirish zarur faqat mavjud.

Natijada quyidagi ifoda bor:

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

dekabrida ham raqamlari

Vazifa. Bu ma'lum bir qator tasodif aniq son ta'minlash uchun zarur. Bundan tashqari, u oddiy bir ifoda masofadan faqat raqamlar topish kerak bo'ladi.

Qaror. Bu erda eng keng tarqalgan hollarda ba'zi bir necha so'zlar:

1 dan 24 soat aniqlash ^ (1 [0-2] | [1-9]) $
oy 1-31 yilda kuni ^ (3 [01] | [12] [0-9] | [1-9]) $
Soniya yoki daqiqa 0-59 ^ [1-5]? [0-9] $
1 100 dan bir qator * (100 |? [1-9] [0-9]) $
yil 1-366 kuni ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Qidiruv IP-manzillar

Vazifa. Bu shu tor 000.000.000.000-255.255.255.255 oralig'ida IPv4 formatida tegishli bo'lgan IP-manzil yoki yo'qligini aniqlash uchun zarur.

Qaror. PHP tilida har qanday muammo bo'lgani kabi, muntazam ifoda ko'p varintov bor. Misol uchun, bu:

so'zlar Online tekshirish

boshlanuvchilar, chunki "muntazam" dasturlash tillari farq sintaksisi murakkabligi, qiyin bo'lishi mumkin uchun to'g'ri regex tekshiring. Bu muammoni hal qilish uchun, bu oson haqiqiy matn yaratilgan andoza to'g'riligini tekshirish uchun qilish ko'p onlayn viktorina asboblari ifodalar bor. dasturchi ifoda va tekshirish ma'lumotlarni kiradi va bir zumda qayta ishlash natijasi qarang. Odatda eng kengaytirilgan tillar uchun oddiy so'zlar, misollar va amalga oshirish farqlarni batafsil mos yozuvlar qismini, taqdim bor.

Lekin to'liq ishonch onlayn xizmatlarga natijalar PHP foydalanish barcha dasturchilar uchun tavsiya etilmaydi. A muntazam ifoda yozilgan va shaxsan tasdiqlangan, malaka ko'taradi va xatolar yo'qligini kafolatlaydi.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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