KompüterProqramlaşdırma

PHP (regex) - bu nədir? Nümunələr və yoxlanılması normal ifadeler

hər hansı bir müasir proqramlaşdırma dili mətn ilə iş zaman, developers daim istədiyiniz model uyğun giriş qiymətləndirmə məqsədləri ilə görüşəcək axtarış və test fraqmentləri və xarakter məlumatların emal əməliyyatlarının digər növ dəyişin. vaxt itkisinə, onun inkişafı və modernləşdirilməsində kodu uyğunluğu və mürəkkəbliyi gətirib çıxarır öz qiymətləndirmə alqoritmlər inkişaf etdirilməsi.

İnternet və WEB dizayn Dil sürətli inkişafı bu kodu üçün tələb olunan minimum məbləği ilə mətn emalı yönlü və yığcam vasitələrinin yaradılması tələb olunur. Bu, heç bir istisna deyil və başlayanlar və PHP dilinin professional developers arasında populyardır. mətn şablon kimi normal ifade dil mətn user vəzifəsi asanlaşdırmaq və onlarla və xətləri yüzlərlə kodu azaldır. Bir çox problemlər bütün olmadan həll edilə bilməz.

PHP Daimi Expressions

«Ereg», «mb_ereg» və «preg» - PHP dil normal ifadeler ilə iş üçün üç mexanizmləri var. Ən ümumi interface «preg», onun funksiyaları ilk PHP paketi daxil edilir Perl dil üçün hazırlanmış PCRE normal ifade dəstək kitabxana çıxışı təmin edir. normal ifadeler dilində müəyyən bir model görə, bir mətn string uyğun funksiyaları Preg axtaran.

syntax Basics

Qısa maddənin çərçivəsində xüsusi ədəbiyyat var, bu, bütün normal ifade sintaksis ətraflı təsvir etmək mümkün deyil. Biz geliştirici üçün bütün imkanları və kod nümunələri anlamaq üçün yalnız əsas elementləri təqdim edir.

PHP normal ifade formal çox çətin müəyyən və buna görə də təsviri asanlaşdırmaq edir. A normal ifade mətn simli edir. Bu xüsusi separator şablon və onu idarə etmək üçün bir yol olduğunu ifadə edən modifiye ibarətdir. nümunələri müxtəlif alternativ və təkrar mümkün daxil.

Məsələn, ifadə / \ d {3} - \ d {2} - \ d {2} / m separatçı şablon izlədi "/" və rəmzi «m» modifiye edir.

normal ifadeler bütün güc meta-simvol istifadə kodlanmış olunur. "\" - əsas dil metacharacter backslash edir. Bu qarşı simvol aşağıdakı növü dəyişir (ie. E. adi xarakter wildcard və əksinə çevrilmişdir). «|» Alternativ şablon ifadə Digər mühüm metacharacter bir düz xətt var. meta-simvol More nümunələr:

^ obyekt və ya bir simli başladı
( subpattern start
) End subpattern
{ Start kvantifikatoru
} End kvantifikatoru
\ d 0-dan 9 dən rəqəmli
\ D bir sıra deyil, hər hansı bir xarakter
\ s boş simvolu, yer, nişanı,
\ w simvolu lüğət

PHP, normal ifadeler, ayrı etibarlı xarakter hesab kosmik, belə ki, müxtəlif XYZ və ABC ifadə emal.

subpatterns

parantez ilə PHP müntəzəm subpatterns, və onlar bəzən "subexpressions" adlanır. aşağıdakı funksiyaları həyata keçirir:

  1. Ayrılması alternativ. Məsələn, istilik model (bir şey | Bird |) "Firebird""isti" sözləri "istilik" ilə üst-üstə düşür. Və Mötərizədə olmadan yalnız bir boş string "quş" və "isti" olacaq.

  2. "Möhtəşəm" subpattern. Bu model substring eşlemeli əgər, sonra bütün matçları qaytarır deməkdir. Aydınlıq üçün, biz bir nümunə vermək. Aşağıdakı müntəzəm ifadə nəzərə alaraq: -matçları üçün string "qalib qızıl medal alır." qalib alır (kubok) (qızıl | | qızıl medal () nömrəli) ilkin söz əlavə, search results veriləcək: "Qızıl medal", "medal", "qızıl".

Operators təkrar (kvadrifikatory)

müntəzəm ifadə tərtib nömrələri və simvolları təkrar analiz tez-tez lazımdır. Bu problem, əgər təkrar bir çox deyil. biz onların dəqiq sayı bilmirəm zaman nə etməli? Bu halda xüsusi metacharacters istifadə etmək lazımdır.

sayı müəyyən etmək metacharacters - kvadrifikatory istifadə təkrar təsviri üçün. Kvadrifikatory iki növ vardır:

  • mötərizədə ümumi;
  • azalıb.

Belə x {2,5} kimi aşırma iki ədəd şəklində icazə təkrar element minimum və maksimum sayı ilə toxunub Ümumiyyətlə kvantifikatoru. təkrar maksimum sayı məlum deyil, ikinci arqument müəyyən deyil: x {2}.

Qısaldılmış Quantifiers lazımsız overloading sintaksis qarşısını almaq üçün təkrar ən ümumi üçün simvolları var. Adətən üç parçalar var:

1. * - {0} bərabərdir sıfır və ya daha təkrar.

2 + - Bir və ya daha çox təkrar, yəni, {1} ...

3.? - sıfır və ya yalnız bir təkrar - {0,1}.

Nümunələr regex

yaxşı dərslik - normal ifadeler, nümunələri öyrənmək olanlar üçün. Biz səy minimum ilə öz imkanlarını göstərir ki, bir neçə verir. Bütün code yuxarıda PHP 4.x və versiyasını tam uyğun gəlir. tam tam sintaksis nəzərdən J .. Friedl "normal ifadeler" tərəfindən kitab tövsiyə bütün dil xüsusiyyətləri sintaksis və istifadə anlamaq və yalnız PHP, həm də Python, Perl, MySQL, Java, Ruby, və C # normal ifadeler nümunələri var etmək.

Qiymətləndirmə E-mail

Task. qonaq ünvan e-poçt tələb olan İnternet səhifə var. Daimi ifadə göndərilməsi əvvəl ünvanları düzgünlüyünü yoxlamaq lazımdır. Check müəyyən poçt qutusu həqiqətən mövcuddur və mesaj qəbul ki, zəmanət vermir. Amma edə açıq-aydın yanlış ünvanlarını alaq.

Qərar. hər hansı bir proqramlaşdırma dili kimi, PHP regex e-mail doğrulama müxtəlif yollarla həyata keçirilən və bu maddədə nümunələri final və yalnız seçim deyil ola bilər. Buna görə də, hər halda, biz proqramlaşdırma və xüsusi həyata keçirilməsi geliştirici tamamilə asılıdır nəzərə alınmalıdır lazımdır tələblərin siyahısını təmin edir.

Belə ki, cari e-poçt test ifadə aşağıdakı şərtlərə yoxlamaq lazımdır:

  1. başlayan iştirakı @ simvolu xətti, və heç bir boşluqlar var.
  2. @ Simvolu ünvanı domain hissəsi domen adları üçün yalnız etibarlı simvollar var. eyni istifadəçi adı aiddir.
  3. istifadəçi adı yoxlanılması zaman belə bir apostrof və ya şaquli xətt kimi xüsusi simvol iştirakı müəyyən etmək lazımdır. Belə rəmzləri potensial təhlükəli və SQL-injection ki hücumları bu cür olan bilər. URL çəkinin.
  4. istifadəçi adı simli ilk və ya son xarakterli ola bilər yalnız bir point, imkan verir.
  5. domen adı ən azı iki və daha artıq altı simvol olmalıdır.

Məsələn, nəzərə bütün bu şərtlər alaraq aşağıdakı rəqəm görülə bilər.

URL Qiymətləndirmə

Task. müəyyən mətn string etibarlı olub-olmadığını yoxlamaq ünvan URL. Bir daha, biz normal ifadeler URL yoxlanılması müxtəlif yollarla həyata keçirilə bilər ki, qeyd.

Qərar. Aşağıdakı kimi son versiyası:

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

İndi rəsm istifadə edərək, daha ətraflı onun komponentlərinin təhlil.

iddia 1 URL hər hansı bir simvol olmamalıdır əvvəl
Claim 2 məcburi prefiks iştirakı yoxlayın «http»
maddə 3 heç bir simvol olmalıdır
İddiasına 4 Əgər orada «s» güvenli əlaqədar URL xal «https»
Claim 5 Tələb hissəsi "//"
Claim 6 No simvol
p. 7-9 Təsdiq birinci səviyyəli domen və kəsir iştirakı
p.10-13 ikinci səviyyəsi və nöqtə yazı domain təsdiq
p.14-17

Fayl strukturu URL - nömrələri, məktublar, vurğulayır, tire, nöqtə bir sıra və sonunda çizgi

kredit kartı nömrələri yoxlayın

Task. Siz ən ümumi ödəniş sistemlərinin daxil kredit kartı sayı qiymətləndirmə həyata keçirmək lazımdır. yalnız kartları üçün variant Visa və MasterCard.

Qərar. ifadə oluştururken siz daxil otağında nəzərə boşluqların mümkün olması lazımdır. Xəritədə rəqəm asan oxu və imla üçün qrupa bölünür. Buna görə də, bir şəxs (ie. E. boşluq istifadə edərək,) bu şəkildə bir sıra daxil etmək üçün cəhd edə bilərsiniz ki təbiidir.

nəzərə mümkün boşluq və ya tire edir ki, bir universal ifadə yaz sadəcə rəqəm istisna olmaqla, bütün simvol imtina daha mürəkkəbdir. Ona görə də biz rəqəm istisna olmaqla, bütün simvol rədd et wildcard ifadə / D istifadə gəlir.

İndi çek sayı birbaşa bilərsiniz. Bütün şirkətlər, kredit kartı emitentlər üçün unikal nömrəsini format istifadə edin. Məsələn istifadə olunur, və müştəri şirkətin adını daxil etmək lazım deyil - bu sayı ilə müəyyən edilir. Visa kartları həmişə ədəd 4 başlamaq və 13 və ya 16 rəqəm bir uzunluğu var. MasterCard Nəticədə uzun bir sıra 16 ilə 51-55 aralığında başlayır, aşağıdakı ifadə almaq:

sifariş emal əvvəl daha Luhn alqoritm hesablanır sayı son rəqəm test edilə bilər.

Təsdiq telefon nömrəsi

Task. daxil telefon nömrəsi düzgün yoxlanılması.

Qərar. sabit və mobil telefon nömrələri rəqəm sayı xeyli belə universal, telefon nömrəsi düzgün mümkün normal ifadeler istifadə edərək yoxlamaq, ölkədən asılı olaraq dəyişir. Lakin beynəlxalq nömrələri model yoxlanılması üçün ciddi format və mükəmməl var. Hətta daha çox daha çox milli telefon operatorları eyni standart cavab üçün çalışırıq ki. aşağıdakı Room strukturu:

+ CCC.NNNNNNNNNNxEEEE, burada:

- C - 1-3 rəqəm ibarət ölkə kodu.

- N - 14 rəqəm qədər nömrəsi.

- E - isteğe uzadılması.

Plus əvəzsiz element və işarə X uzadılması lazım yalnız edir.

Nəticədə biz aşağıdakı ifadə var:

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

sıra nömrələri

Task. Bu müəyyən bir sıra təsadüf tam təmin etmək lazımdır. Bundan əlavə, müntəzəm ifadə sıra yalnız nömrələri tapmaq lazımdır.

Qərar. Burada ən ümumi hallarda bəzi bir neçə ifadələr var:

1 24 saat müəyyən ^ (1 [0-2] | [1-9]) $
Ay 1-31 Günü ^ (3 [01] | [12] [0-9] | [1-9]) $
Seconds ya dəqiqə 0-59 ^ [1-5] [0-9] $
1 100-dən bir sıra * (100 | [1-9] [0-9]) $
İlin 1-366 günü ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} | [1-9] [0-9]) $

Axtarış IP-ünvanları

Task. Bu bir string 000.000.000.000-255.255.255.255 intervalında IPv4 formatında cari IP-ünvanı olub-olmadığını müəyyən etmək lazımdır.

Qərar. PHP dilində hər hansı bir problem kimi, normal ifade çox varintov var. Məsələn, bu:

ifadələrin Online yoxlanılması

başlayanlar çünki "müntəzəm" proqramlaşdırma dilləri fərqlənir sintaksis mürəkkəbliyi, çətin ola bilər düzgün regex yoxlayın. Bu problemi həll etmək üçün, asan real mətn yaradılmış şablon düzgünlüyünü yoxlamaq üçün bir çox online test ifadələr var. proqramçı ifadə və yoxlama məlumatları daxil və dərhal emal nəticə görmək. Adətən ən uzun dil üçün normal ifadeler, nümunələri və həyata keçirilməsi fərqləri ətraflı istinad bölmə təqdim var.

Amma tam etibar online services nəticələri PHP istifadə bütün developers üçün tövsiyə deyil. A normal ifade yazılı və şəxsən təsdiq ixtisas artırır və səhvlərin olmaması təmin edir.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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