DatoriProgrammēšana

PHP (regex) - kas tas ir? Piemēri un pārbaude regulārās izteiksmes

Strādājot ar tekstu jebkurā mūsdienu programmēšanas valodu, izstrādātāji pastāvīgi tiekas ar ievades validācijas mērķiem saskaņā ar vēlamo modeli, meklēt un aizstāt testa fragmenti un cita veida apstrādes darbības rakstura informācija. Attīstīt savu vērtēšanas algoritmus rada laika zudumu, koda saderība un sarežģītību savā attīstībā un modernizācijā.

Straujā interneta un WEB-dizaina valodu nepieciešams izveidot daudzveidīgu un kompaktu izmantojot teksta apstrādes ar minimālo summu, kas nepieciešama, lai šo kodu. Tas nav izņēmums un ir populāra starp iesācējiem un profesionāliem izstrādātājiem PHP valodu. Regulārā izteiksme valoda kā teksta veidnes, lai vienkāršotu uzdevumu apstrādes tekstu un samazināt kodu desmitiem un simtiem līnijas. Daudzas problēmas nevar atrisināt vispār bez tā.

Regulāras izteiksmes PHP

PHP valodā ir trīs mehānismi darbam ar regulārām izteiksmēm - «ereg», «mb_ereg» un «preg». Visbiežāk ir saskarne «preg», kuras funkcijas nodrošina piekļuvi bibliotēkai PCRE regulāro izteiksmi atbalsts, kas sākotnēji izstrādāta Perl valodu, kas ir iekļauta PHP paketē. Preg-meklē funkcijas konkrētā teksta string atbilstību, saskaņā ar noteiktu modeli valodā regulārās izteiksmes.

sintakses pamati

Kā daļa no raksts nav iespējams aprakstīt detalizēti viss regulāras izteiksmes sintaksi, jo tas ir īpašs literatūra. Mēs piedāvājam tikai galvenos elementus, lai parādītu iespējas attīstītājs un saprast koda piemērus.

PHP regulāra izteiksme ir oficiāli definēts ļoti grūti, un tāpēc vienkāršotu aprakstu. Regulāra izteiksme ir teksta virkne. Tas sastāv no speciāla separators veidni un modifikatoru, kas norāda to, kā rīkoties ar to. Iespējamais iekļaušana dažādās alternatīvas un atkārtojumiem modeļiem.

Piemēram, vārda / \ d {3} - {2} \ d - \ d {2} / m dalītājs ir "/", kam seko veidnē, un simbols «m» ir modifikators.

Visu varu regulārās izteiksmes tiek kodēta, izmantojot meta rakstzīmes. Galvenā valoda metacharacter ir slīpsvītra - "\". Tas maina no šādiem rakstzīmes pretējā veidu (ti. E. pārveidota par parastu rakstzīmju aizstājējzīmi un otrādi). Vēl viens svarīgs metacharacter ir taisna līnija «|», norāda alternatīvu veidni. Vairāk piemēri meta rakstzīmes:

^ Sākt objektu vai virknes
( Sākt subpattern
) Beigu subpattern
{ Sākt kvantors
} Beigu kvantors
\ d decimālā cipars no 0 līdz 9
\ D jebkurš raksturs, kas nav skaitlis
\ s tukša simbolu, telpa, tab,
\ w simbols vārdnīca

PHP, apstrādājot regulāras izteiksmes, telpu uzskatīt par atsevišķu spēkā esošu simbolu, tā izpausme XYZ un ABC KUR ir atšķirīgas.

subpatterns

PHP regulāro subpatterns iekavās, un viņi dažreiz sauc "subexpressions". Veiciet šādas funkcijas:

  1. Piešķiršanas alternatīvas. Piemēram, siltuma modelis (kaut | Putnu |) sakristu ar vārdiem "siltums", "Firebird" un "karsto". Un bez iekavām tas būs tikai tukša virkne, "putnu" un "karsto".

  2. "Spectacular" subpattern. Tas nozīmē, ka, ja modelis saskaņota apakšvirkni, tad atgriež visas spēles. Skaidrības labad mēs sniegt piemēru. Ņemot vērā šādu regulāro izteiksmi: uzvarētājs saņem ((zelts | apzeltīts) (medaļa | kauss)) - un stīgu spēlēm, "uzvarētājs saņem zelta medaļu." Papildus sākotnējam frāzi, tiks izsniegts meklēšanas rezultāti: "Zelta medaļu", "medaļas", "zelts".

Operatori atkārtojumus (kvadrifikatory)

Ar regulāru izteiksmi apkopojot bieži ir nepieciešams analizēt atkārtošanos ciparus un simbolus. Tā nav problēma, ja nav daudz atkārtojumu. Bet ko darīt, ja mēs nezinām precīzu to numuru? Šajā gadījumā ir nepieciešams izmantot īpašas metacharacters.

Par aprakstu atkārtojumu izmantoto kvadrifikatory - metacharacters lai norādītu numuru. Kvadrifikatory ir divu veidu:

  • kopīgs iekavās;
  • samazināts.

Kopumā kvantors saskaras ar minimālo un maksimālo skaitu atļauto atkārtojumu elementa veidā diviem numuriem lencēm, piemēram, x {2,5}. Ja maksimālais atkārtojumu skaits nav zināms, otrais arguments nav norādīts: x {2}.

Saīsinātie quantifiers ir simboli visbiežāk atkārtojumu, lai izvairītos no nevajadzīgas nepārslogotu sintaksi. Parasti ir trīs gabali:

1. * - nulle vai vairāk atkārtojumus, kas ir vienāds ar {0,}.

2. + - vienu vai vairākus atkārtojumus, proti, {1} ...

3.? - nulle vai tikai viens atkārtojums - {0,1}.

Piemēri regex

Tiem, kuri mācās regulāras izteiksmes, piemēri - labāko mācību grāmatas. Mēs dodam maz kas parādīt savas iespējas ar minimālu piepūli. Viss kods ir pilnībā savietojama ar versijām 4.x PHP un vairāk. Lai pilnībā izprastu sintaksi un izmantošanu visiem valodas funkcijas iesakām grāmatu ar J .. Friedl, "regulārās izteiksmes", kas pilnībā noteiktu sintaksi, un tur ir piemēri regulārām izteiksmēm, ne tikai PHP, bet arī uz Python, Perl, MySQL, Java, Ruby, un C #.

Apstiprināšanas e-pasta adrese

Uzdevums. Ir interneta lapa, kurā apmeklētājs tiek pieprasīta adrese e-pastu. Regulāra izteiksme ir jāpārbauda pareizību adresēm pirms sūtīt ziņojumus. Pārbaudiet negarantē, ka norādītais pastkastes patiešām pastāv un saņem ziņojumus. Bet atsijātu acīmredzami nepareizus adreses to var.

Lēmums. Tāpat kā ar jebkuru programmēšanas valodu, PHP regulāras izteiksmes e-pasta adrese pārbaude var īstenot dažādos veidos, un šajā rakstā sniegtie piemēri nav galīgs, un tikai izvēle. Tādēļ, katrā gadījumā, mēs sniegt sarakstu ar prasībām, kas ir jāņem vērā, plānojot un specifisku īstenošana ir pilnībā atkarīga no attīstītājs.

Tādējādi izteiksme, kas pārbauda derīgu e-pasta adresi, jāpārbauda šādi nosacījumi:

  1. Ar sākuma klātbūtne līnijas @ simbolu, un nav spraugu.
  2. Domēna daļa adresi @ simbolu, ir derīgs tikai rakstzīmes domēna vārdu. Tas pats attiecas arī uz lietotāja vārda.
  3. Pārbaudot lietotājvārdu, ir nepieciešams, lai noteiktu klātbūtni speciālās rakstzīmes, piemēram, apostrofs vai vertikālas līnijas. Šādi simboli ir potenciāli bīstami un var tikt ietverti šādos veida uzbrukumu ka SQL injekcijas. Izvairieties adreses.
  4. lietotājvārdi atļaut tikai vienu punktu, kas nedrīkst būt pirmais vai pēdējais rakstzīme virknē.
  5. Domēna vārds ir jābūt vismaz divus un ne vairāk kā sešas rakstzīmes.

Piemēram, ņemot vērā visus šos apstākļus, var redzēt sekojošajā attēlā.

Validācija URL

Uzdevums. Pārbaudiet, vai norādītais teksts virkne ir derīga adrese URL. Vēlreiz, mēs atzīmējam, ka regulāras izteiksmes URL pārbaudi var īstenot dažādos veidos.

Lēmums. Mūsu gala versija ir šāda:

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

Tagad analizēt tās sastāvdaļas sīkāk, izmantojot zīmējumu.

1. pretenziju Pirms URL nebūtu nekādas zīmes
2 Pretenzijas Pārbaudiet klātbūtni obligātā prefiksu «http»
3. punkts Tur nedrīkst būt simboli
4. pretenziju Ja «s», URL norāda uz drošu savienojumu «https»
5. pretenziju Obligātā daļa no "//"
Pretenzijas 6 Nav rakstzīmēm
7-9 p. Pārbauda pirmā līmeņa domēnu un klātbūtni punkts
p.10-13 Pārbaudot domēna rakstot otro līmeni un punktu
p.14-17

Failu struktūra URL - kopums skaitļiem, burtiem pasvītrojuma, domuzīmes, punkti, un slīpsvītra beigās

Pārbaudiet kredītkaršu numurus

Uzdevums. Jums ir nepieciešams, lai īstenotu validēšana ievadīto kredītkartes skaitu visbiežāk maksājumu sistēmām. Variants tikai kartēm Visa un MasterCard.

Lēmums. Veidojot izteiksmi jums ir nepieciešams, lai ņemtu vērā iespējamo klātbūtni nepilnības ievades telpā. Cipari kartē ir sadalīti grupās, ērtākai lasīšanai un diktāts. Tāpēc ir dabiski, ka cilvēks var mēģināt ievadīt numuru šādā veidā (ti. E. Izmantojot atstarpes).

Uzrakstiet universālu izteiksmi, kas ņem vērā iespējamās atstarpes un defises, ir sarežģītāk nekā vienkārši izmest visas rakstzīmes, izņemot cipariem. Tādēļ, mēs iesakām izmantot aizstājējzīmes izteiksmes / D, kas novērš visas rakstzīmes, izņemot cipariem.

Tagad jūs varat doties tieši uz čeka numuru. Visi uzņēmumi, kredītkaršu emitentiem izmantot unikālu skaitļu formātu. Šajā piemērā tas tiek izmantots, un klients nav nepieciešams ievadīt uzņēmuma nosaukumu, - to nosaka numuru. Visa kartēm vienmēr sākas ar skaitļiem 4, un to garums ir 13 vai 16 cipariem. MasterCard sākas diapazonā no 51-55 ar ilgu numuru 16. Tā rezultātā, mēs iegūstam šādu izteiksmi:

Pirms apstrādes secību var vēl pārbaudīt pēdējos ciparus skaitu, kas aprēķināts uz Luhn algoritmu.

Pārbaude telefona numurs

Uzdevums. pareizību ievadīto tālruņa numuru pārbaude.

Lēmums. No cipariem fiksēto un mobilo tālruņu numuru skaits ievērojami atšķiras atkarībā no valsts, lai vispārēji pārbaudīt, izmantojot regulāras izteiksmes, tālruņa numurs pareizi neiespējami. Bet starptautiskie numuri ir stingra formātu un perfekta pārbaudei modeli. Vēl vairāk, lai vairāk un vairāk valstu telefonu operatori cenšas izpildīt to pašu standartu. Numura struktūra ir šāda:

+ CCC.NNNNNNNNNNxEEEE, kur:

- C - ir valsts kodu, kas sastāv no 1-3 cipariem.

- N - skaits līdz 14 cipariem.

- E - pēc izvēles pagarinājums.

Plus ir neatņemama sastāvdaļa, un zīme X ir klāt tikai tad, kad nepieciešams pagarinājumu.

Kā rezultātā mums ir šādu izteiksmi:

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

Skaitļi diapazonā

Uzdevums. Ir nepieciešams, lai nodrošinātu sakritība vesels skaitlis no noteiktā diapazonā. Turklāt, tas ir nepieciešams, lai atrastu regulāru izteiksmi tikai ciparus no diapazonā.

Lēmums. Šeit ir daži izteicieni uz dažiem visbiežāk gadījumos:

Noteikt stundu no 1 līdz 24 ^ (1 [0-2] | [1-9]) $
Diena mēnesī 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekundes vai minūtes 0-59 ^ [1-5]? [0-9] $
Vairāki no 1 līdz 100 * (100 |? [1-9] [0-9]) $
Diena 1-366 gadu ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Meklēt IP adreses

Uzdevums. Tas ir nepieciešams, lai noteiktu, vai, ņemot vērā virkne ir derīga IP adrese IPv4 formātā diapazonā no 000.000.000.000-255.255.255.255.

Lēmums. Tāpat kā ar jebkuru problēmu valodā PHP, regulāra izteiksme ir daudz varintov. Piemēram, šis:

Online pārbaude izteicienu

Pārbaudiet regex pareizi iesācējiem var būt grūti, jo sarežģītības sintakses, kas atšķiras no "regulāru" programmēšanas valodas. Lai atrisinātu šo problēmu, ir daudz tiešsaistes testeri izteicieni, kas padara to viegli, lai pārbaudītu pareizību veidnes esat izveidojis reālajā tekstā. Programmētājs ieiet vārda un pārbaudes datus, un uzreiz redzēt rezultātu apstrādi. Parasti ir jāiesniedz atskaites sadaļa, kurā tiks detalizēta regulārās izteiksmes, piemērus un īstenošanas atšķirības attiecībā visvairāk ilgāku valodās.

Bet, lai pilnībā uzticamas tiešsaistes pakalpojumiem rezultāti nav ieteicama visiem izstrādātājiem, kuri izmanto PHP. Regulāra izteiksme ir uzrakstīts un pārbaudīta personīgi, paaugstina kvalifikāciju un garantēt, ka nav kļūdu.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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