ArvutidProgrammeerimine

PHP (regulaaravaldis) - mis see on? Näited ja kontrollimise regulaaravaldiste

Töötades teksti iga kaasaegse programmeerimise keel, arendajad pidevalt kohtuda eesmärkide input validation järgimise soovitud muster, otsida ja asendada test fragmendid ja muud liiki töötlemistoimingute iseloomu kohta. Arendada oma valideerimise algoritme viib ajakadu, kood ühilduvuse ja keerukust oma arengu ja moderniseerimise.

Kiire areng Internet ja Web Design nõutavad keeled loomine mitmekülgne ja kompaktne vahend teksti töötlust miinimumsumma see kood. See ei ole erand ja on populaarne algajatele ja professionaalne arendajad PHP keeles. Regulaaravaldise keeles tekstimalle lihtsustada ülesanne käitlemise teksti ja vähendavad kood kümneid ja sadu ridu. Paljud probleemid ei saa lahendada üldse ilma selleta.

Regulaaravaldiste PHP

PHP keeles on kolm mehhanismid töötavad regulaaravaldiste - «ereg», «mb_ereg» ja «preg». Kõige tavalisem on liides «preg», mille ülesanneteks pakkuda juurdepääsu raamatukogu PCRE regulaaravaldise toetust, mis töötati algselt välja Perl keeles, mis on lisatud PHP pakendis. Preg-otsib funktsioonid antud teksti string sobitamise vastavalt teatud muster keeles regulaaravaldiste.

süntaks põhitõed

Osana lühike artikkel on võimatu kirjeldada üksikasjalikult kogu regulaaravaldise süntaks, see on erialakirjandust. Tutvustame ainult peamised elemendid näidata võimalusi arendaja ja mõista koodi näiteid.

PHP regulaaravaldise on ametlikult määratletud väga raske ja seetõttu lihtsustada kirjeldus. Regulaaravaldis on tekstistringi. Koosneb pühendunud eraldaja malli ja teisendaja näitab, kuidas sellega hakkama. Võimaliku kaasamisega erinevaid alternatiive ja kordusi mustrid.

Näiteks väljend / \ d {3} - \ d {2} - \ d {2} / m jagaja on "/", millele järgnes mall ja sümboliga «m» on teisendaja.

Kõik võimu regulaaravaldiste on kodeeritud kasutades meta-märke. Peamine keel metacharacter on backslash - "\". See muudab tüüpi järgmised märgid teisel (st. E. muudetud tavaliseks iseloomu märk ja vastupidi). Teine oluline metacharacter on sirgjoon «|», määrab alternatiivse malli. Veel näiteid meta-märke:

^ Alustage objekti või string
( Alustage subpattern
) End subpattern
{ Start kvantorina
} End kvantorina
\ d pärast koma 0 kuni 9
\ D iga märk, mis ei ole number
\ s tühi sümbol, ruumi, tab,
\ w Sümbolisõnastik

PHP, töötlemise regulaaravaldiste, ruumi pidada eraldi kehtib iseloomu, nii väljendus XYZ ja ABC KUS on erinevad.

subpatterns

PHP regulaarne subpatterns sulgudes ja neid mõnikord nimetatakse "subexpressions". Täidab järgmisi ülesandeid:

  1. Jaotus alternatiive. Näiteks soojust muster (midagi | Bird |) langeb kokku sõnadega "soojus", "Firebird" ja "kuum". Ja ilma sulgudes siis ainult tühja stringi, "lind" ja "kuum".

  2. "Spectacular" subpattern. See tähendab, et kui muster sobitatud alamstring, siis tagastab kõik kohtumised. Selguse huvides anname näide. Arvestades järgmise regulaaravaldise: võitja saab ((kuld | kullatud) (medal | tassi)) - ja string vasteid, "võitja saab kuldmedali." Lisaks esialgse fraasi otsingutulemuste antakse: "kuldmedal", "medalid", "kuld".

Operaatorid kordust (kvadrifikatory)

Koostamisel regulaaravaldis on sageli vaja analüüsida kordamine numbreid ja sümboleid. See ei ole probleem, kui mitte palju kordusi. Aga mida teha, kui me ei tea nende täpset arvu? Sel juhul on vaja kasutada spetsiaalseid metaandmed märkidega.

Kirjelduse korduste kasutada kvadrifikatory - metaandmed märkidega täpsustada number. Kvadrifikatory on kahte liiki:

  • ühise sulgudes;
  • vähendada.

Üldine kvantorina liigutatud minimaalse ja maksimaalse lubatud arvu korduste element kujul kaks numbrit looksulule nagu x {2,5}. Kui maksimaalne korduste arv ei ole teada, siis teine argument ei ole täpsustatud: x {2}.

Lühendatud kvantoreid on sümbolite kõige levinum korduste vältimiseks tarbetu ülekoormamise süntaks. Tavaliselt on kolm kärped:

1. * - null või enam kordust, mis on samaväärne {0}.

2. + - ühe või mitme kordust, st {1} ...

3.? - null või ainult üks korduv - {0,1}.

näited regulaaravaldis

Neile, kes õpivad regulaaravaldiste, näited - parim õpik. Anname mõned, et näidata oma võimalusi koos minimaalse pingutusega. Kõik kood on täielikult kooskõlas versioonid PHP 4.x ja eespool. Et täielikult mõista süntaksit ja kasutamist kõigi keele funktsioonid soovitame raamatu J .. Friedl "regulaaravaldiste", mis täielikult arvesse süntaks, ja seal on näited regulaaravaldiste mitte ainult PHP, vaid ka Python, Perl, MySQL, Java, Ruby ja C #.

Valideerimine E-posti aadress

Task. On internetilehekülg, kus külastaja taotletakse aadress e-posti. Regulaaravaldise peab õigsuse kontrollimiseks aadressid enne sõnumite saatmist. Kontrolli ei garanteeri, et täpsustatud postkasti tegelikult olemas ja saab sõnumeid. Aga rookima ilmselt vale aadressi see võimalik.

Otsus. Nagu iga programmeerimiskeelt, PHP regulaaravaldis meiliaadress kontrolli saaks rakendada erinevaid viise ja näiteid selles artiklis ei ole lõplik ja ainus valik. Seetõttu igal juhul anname nõuete loetelu, mis tuleb arvesse võtta, kui programmeerimine ja konkreetse rakendamise sõltub täielikult arendaja.

Seega väljendit, mis testib kehtiv e-posti, peaksid kontrollima järgmistel tingimustel:

  1. Esinemisega stardijoonele sümboliga @ ning puuduvad lüngad.
  2. Domeeni osa aadress sümboliga @ sisaldab ainult sobilikud tähemärgid domeeninimed. Sama kehtib ka kasutaja nime.
  3. Kui kontrollitakse kasutajanimi on vaja kindlaks määrata erimärkide olemasolu nagu ülakoma või vertikaalne joon. Sellised sümbolid on potentsiaalselt ohtlik ja võib esineda näiteks liiki rünnakute SQL süstimise. Vältida aadressid.
  4. kasutajanimed lubada ainult üks punkt, mis ei pruugi olla esimene või viimane märk string.
  5. Domeeni nimi peab sisaldama vähemalt kahte ja mitte rohkem kui kuus tähemärki.

Näide, võttes arvesse kõiki neid tingimusi saab näha allolevalt jooniselt.

Valideerimine URL

Task. Kontrollige, kas määratud teksti string on kehtiv aadress URL. Taas märgime, et regulaaravaldiste URL-checking saab rakendada mitmel viisil.

Otsus. Meie lõplik versioon on järgmine:

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

Nüüd analüüsida selle komponentide üksikasjalikumalt kasutades joonise.

punktile 1 Enne URL ei tohiks olla ühtegi märki
punktile 2 Kontrolli olemasolu kohustuslik eesliide «http»
punkt 3 Ei tohi olla sümboleid
punktile 4 Kui «s», URL osutab turvalist ühendust «https»
punktile 5 Nõutav osa "//"
nõude 6 nr tähemärki
p. 7-9 Kontrollimine esimese taseme domeeni ja juuresolekul punkti
p.10-13 Kontrollimine domeeni kirjalikult teisele tasemele ja punkt
14-17

Faili struktuur URL - kogum numbrid, tähed, allkriipsud, kriipsud dots ja kaldkriips lõpus

Kontrollige krediitkaardi numbrid

Task. Sa pead ellu valideerimine sisestatud krediitkaardi number levinumaid maksesüsteemid. Variant ainult kaarte Visa ja MasterCard.

Otsus. Kui loote väljendit pead arvestama võimaliku olemasolu lünki sisend ruumi. Numbrit kaardil on jagatud rühmadesse lugemise hõlbustamiseks ja diktaat. Seetõttu on loomulik, et inimene võib proovida sisestada number sel viisil (st. E. kasutamine tühikud).

Kirjutage universaalne mõiste, mis arvestab võimalikult ruumid või sidekriipsu on keerulisem kui lihtsalt ära visata kõik märgid, välja arvatud numbrit. Seetõttu soovitame kasutada metamärke väljend / D, mis eemaldab kõik märgid, välja arvatud numbrit.

Nüüd võid minna otse tšeki number. Kõik ettevõtted, krediitkaardiväljastajad kasutada unikaalne number formaadis. Näites on kasutatud, ja klient ei vaja sisestada ettevõtte nimi - see on määratud number. Visa kaarte alati algama numbrid 4 ja pikkus on 13 või 16 numbrit. MasterCard algab vahemikus 51-55 pika number 16. Selle tulemusena saame järgmise valemi abil:

Enne tellimuse töötlemisel võib veelgi testinud viimast numbrit number, mis on arvutatud LUHN algoritm.

Telefoninumbri kinnitamine

Task. Õigsuse kontrollimist sisestatud telefoninumber.

Otsus. Numbrite arv on fikseeritud ja mobiilside telefoninumbrid kõiguvad sõltuvalt riigist, nii üldiselt kontrollida kasutades regulaaravaldisi, telefoninumber õigesti võimatu. Aga rahvusvaheliste numbrid on range formaat ja täiuslik kontrollimiseks muster. Isegi enam, et üha rohkem riigi telefonioperaatorite üritavad täita samal tasemel. Tubade struktuur on järgmine:

+ CCC.NNNNNNNNNNxEEEE, kus:

- C - on riigi koodi, mis koosneb 1-3 numbrit.

- N - arvu kuni 14 numbrit.

- E - vabatahtlik laiendus.

Plus on asendamatu element, ja tähis X esineb ainult siis, kui vaja laiendus.

Selle tulemusena on meil järgmise valemi abil:

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

Numbrid vahemikus

Task. See on vajalik, et tagada juhus täisarv teatud vahemikus. Lisaks on vaja leida regulaaravaldise ainult numbreid vahemikus.

Otsus. Siin on mõned väljendid mõned kõige levinumad juhtudel:

Määratakse tund 1-24 ^ (1 [0-2] | [1-9]) $
Päev kuu 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekundit või minutit 0-59 ^ [1-5]? [0-9] $
Mitmed 1-100 * (100 |? [1-9] [0-9]) $
Päev aasta 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Otsi IP-aadressid

Task. See on vajalik, et teha kindlaks, kas antud string on kehtiv IP-aadress IPv4 formaat vahemikus 000.000.000.000-255.255.255.255.

Otsus. Nagu iga probleem keeles PHP, regulaaravaldise on palju varintov. Näiteks see:

Online kontrolli väljendite

Kontrolli regulaaravaldis õigesti algajatele võib olla raske, sest keerukust süntaks, mis erineb "tavalisi" programmeerimiskeeli. Et seda probleemi lahendada, on palju online testijad väljendeid, et oleks lihtne kontrollida õigsust malli loodud reaalses teksti. Programmeerija siseneb ekspressiooni ja kontroll andmete ja koheselt näha töötlemise tulemusena. Tavaliselt on esitada viide lõik, kus kirjeldatakse üksikasjalikult regulaaravaldiste, näited ja rakendamise erinevused kõige pikema keeles.

Aga täielikult usalduse võrguteenuste tulemusi ei soovitata kõik arendajad, kes kasutavad PHP. Regulaaravaldis on kirjutatud ja kinnitatud isiku tõstab kvalifikatsiooni ja tagada puudumisel vigu.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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