DatorerProgrammering

PHP (regex) - vad är det? Exempel och kontroll reguljära uttryck

När du arbetar med text i alla moderna programmeringsspråk, utvecklare möta ständigt med målen för validering av indata för överensstämmelse med det önskade mönstret, söka och ersätta provfragment och andra typer av behandlingsoperationer av teckeninformation. Utveckla dina egna valideringsalgoritmer leder till förlust av tid, koden kompatibilitet och komplexitet i dess utveckling och modernisering.

Den snabba utvecklingen av Internet och webbdesign språk krävs skapandet av mångsidiga och kompakta medel för textbehandling med ett minimum som krävs för denna kod. Det är inget undantag och är populär bland nybörjare och professionella utvecklare av PHP. Det vanliga uttrycket språk som textmallar för att förenkla uppgiften att hantera text och minska kod för tiotals och hundratals rader. Många problem kan inte lösas alls utan den.

Reguljära uttryck i PHP

PHP har tre mekanismer för att arbeta med reguljära uttryck - «ereg», «mb_ereg» och «preg». Det vanligaste är gränssnittet «preg», vars funktioner ger tillgång till biblioteket i PCRE reguljära uttryck stöd, som ursprungligen utvecklades för Perl språk, som ingår i PHP-paketet. Preg-söker funktioner i en given textsträng matchning, enligt ett visst mönster på det språk som reguljära uttryck.

syntax Basics

Som en del av en kort artikel är det omöjligt att i detalj beskriva hela reguljära uttryck syntax, för detta finns det en speciell litteratur. Vi presenterar endast de viktigaste delarna för att visa möjligheterna till utvecklare och förstå kodexempel.

I PHP reguljära uttryck definieras formellt mycket svårt, och därmed förenkla beskrivningen. Ett reguljärt uttryck är en textsträng. Den består av en dedikerad separator mall och modifierings anger sätt att hantera det. Eventuellt tas upp i de olika alternativen och upprepningar av mönster.

Till exempel, i uttrycket / \ d {3} - \ d {2} - \ d {2} / m delaren är "/", följt av mallen, och symbolen «m» är modifieraren.

All makt reguljära uttryck kodas med hjälp av meta-tecken. Huvudspråket metatecken är omvänt snedstreck - "\". Det ändrar typen av följande tecken på den motsatta (dvs.. E. Efter omräkning till en vanlig teckenjokertecken och vice versa). En annan viktig metatecken är en rak linje «|» anger alternativa mallen. Fler exempel på meta tecken:

^ Starta objekt eller en sträng
( starta delmönster
) end delmönster
{ Start kvantifierare
} end kvantifierare
\ d decimalsiffra från 0 till 9
\ D alla tecken som inte är ett tal
\ s tom symbol, utrymme, flik,
\ w symbol lexikon

PHP, bearbetning reguljära uttryck, betraktas som en separat giltigt tecken utrymme, så uttrycket av XYZ och ABC VAR är olika.

delmönster

I PHP reguljära delmönster av parenteser, och de kallas ibland "deluttryck". Utföra följande funktioner:

  1. Allokerings alternativ. Till exempel värmemönster (något | Bird |) sammanfaller med orden "heat", "Eldfågeln" och "hot". Och utan fästena är det bara en tom sträng "bird" och "hot".

  2. "Spectacular" delmönster. Detta innebär att om mönstret matchas trängen, återvänder sedan alla matcher. För tydlighetens skull ger vi ett exempel. Med tanke på den följande reguljära uttryck: vinnaren får ((gold | guldpläterad) (medalj | cup)) - och strängen för tändstickor "vinnaren får en guldmedalj." Förutom den inledande frasen kommer sökresultaten utfärdas: "Gold Medal", "medaljer", "guld".

Operatörer repetitioner (kvadrifikatory)

Vid sammanställningen det reguljära uttrycket är ofta nödvändigt att analysera upprepning av siffror och symboler. Detta är inte ett problem, om inte en hel del upprepningar. Men vad göra när vi inte vet deras exakta antalet? I detta fall är det nödvändigt att använda speciella metatecken.

För en beskrivning av upprepningar används kvadrifikatory - metatecken för att ange numret. Kvadrifikatory är av två typer:

  • vanligt inom parentes;
  • minskas.

Övergripande kvantifierare rörd av det minimala och maximala antalet tillåtna repetitioner element i form av två siffror i de hängslen, såsom x {2,5}. Om det maximala antalet repetitioner inte är känd, är det andra argumentet inte specificeras: x {2}.

Förkortade kvantifierare är symboler för de vanligaste repetitioner för att undvika onödig överbelastning syntax. Vanligtvis finns det tre snitt:

1. * - noll eller flera upprepningar, vilket motsvarar {0,}.

2. + - en eller flera upprepningar, dvs {1} ...

3.? - noll eller endast en upprepning - {0,1}.

exempel regex

För dem som lär sig reguljära uttryck, exempel - den bästa läroboken. Vi ger några som visar deras möjligheter med ett minimum av ansträngning. All kod är fullt kompatibel med versioner av PHP 4.x och ovan. För att till fullo förstå syntax och användning av alla språk funktioner vi rekommenderar boken av J .. Friedl, "reguljära uttryck", som till fullo anses syntax, och det finns exempel på reguljära uttryck inte bara PHP, men också för en Python, Perl, MySQL, Java, Ruby, och C #.

Validering E-postadress

Uppgift. Det finns en internetsida som besökaren begärs adress e-post. Reguljärt uttryck måste kontrollera riktigheten av adresserna innan du skickar meddelanden. Check garanterar inte att den angivna postlådan faktiskt existerar och tar emot meddelanden. Men sålla ut uppenbart felaktiga adresser kan det.

Beslut. Som med alla programmeringsspråk, i PHP regex e-postadress verifiering kan implementeras på olika sätt, och exemplen i den här artikeln är inte den sista och enda valet. Därför, i varje enskilt fall, ska vi ge en lista med krav som måste beaktas vid programmering och konkreta genomförandet beror helt på utvecklaren.

Således uttryck som testar en giltig e-post, bör du kontrollera följande:

  1. Närvaron i startlinjen symbolen @, och det finns inga luckor.
  2. Domändelen av adressen till symbolen @ innehåller endast giltiga tecken för domännamn. Detsamma gäller användarens namn.
  3. Vid kontroll av användarnamn är nödvändig för att bestämma närvaron av specialtecken, såsom en apostrof eller vertikal linje. Sådana symboler är potentiellt farliga och kan ingå i sådana typer av attacker som SQL-injektion. Undvik adresser.
  4. användarnamn tillåter endast en punkt, som kanske inte är den första eller sista tecknet i strängen.
  5. Domännamnet måste innehålla minst två och högst sex tecken.

Exempel, med hänsyn till alla dessa villkor kan ses i följande figur.

Validering av en URL

Uppgift. Kontrollera om den angivna textsträngen är en giltig adress URL. Än en gång kan vi konstatera att reguljära uttryck URL-kontroll kan genomföras på olika sätt.

Beslut. Vår slutliga versionen är som följer:

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

Nu analyserar dess komponenter mer detaljerat med hjälp av ritningen.

krav 1 Innan URL inte borde ha några tecken
krav 2 Kontrollera förekomsten av den obligatoriska prefixet «http»
punkt 3 Det får inte finnas några symboler
krav 4 Om det «s», URL pekar på en säker anslutning «https»
krav 5 Erforderliga delen av "//"
krav 6 Inga tecken
s. 7-9 Verifiering av första domänen och närvaron av punkten
p.10-13 Verifiera domänen för att skriva den andra nivån och den punkt
p.14-17

Filstrukturen URL - en uppsättning siffror, bokstäver, understreck, bindestreck, punkter och ett snedstreck i slutet

Kontrollera kreditkortsnummer

Uppgift. Du behöver för att genomföra validering av in kreditkortsnumret av de vanligaste betalningssystemen. En variant endast för kort Visa och Mastercard.

Beslut. När du skapar ett uttryck som du måste ta hänsyn till den eventuella förekomsten av luckor i ingångsrummet. Siffrorna på kartan är indelade i grupper för att underlätta läsning och diktamen. Därför är det naturligt att en person kan försöka ange en siffra på det här sättet (dvs. E. Använda mellanslag).

Skriv en universell uttryck som tar hänsyn till eventuella mellanslag eller bindestreck, är mer komplicerat än att bara kasta alla tecken utom siffror. Därför rekommenderar vi att du använder ett jokertecken uttryck / D, som tar bort alla tecken utom siffror.

Nu kan du gå direkt till incheckningsnummer. Alla företag, kreditkortsutgivare använder ett unikt nummer format. I exemplet används och kunden behöver inte ange namnet på företaget - det bestäms av antalet. Visakort börjar alltid med siffrorna 4 och har en längd av 13 eller 16 siffror. Mastercard börjar i intervallet 51-55 med en lång rad 16. Som ett resultat, får vi följande uttryck:

Före bearbetning av order kan testas ytterligare de sista siffrorna i numret, som beräknas på Luhn-algoritmen.

Verifiera telefonnummer

Uppgift. Kontroll riktigheten av det angivna telefonnumret.

Beslut. Antalet siffror i fasta och mobila telefonnummer varierar avsevärt beroende på landet, så universellt kontrollera med reguljära uttryck, telefonnummer korrekt omöjligt. Men internationella nummer har en strikt format och perfekt för att kontrollera mönstret. Ännu mer så att fler och fler nationella teleoperatörer försöker uppnå samma standard. Rum struktur är följande:

+ CCC.NNNNNNNNNNxEEEE, där:

- C - är landskoden bestående av 1-3 siffror.

- N - antal upp till 14 siffror.

- E - tillval förlängning.

Plus är en oundgänglig del, och tecknet X är närvarande endast vid behov förlängning.

Som ett resultat har vi följande uttryck:

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

Siffrorna i intervallet

Uppgift. Det är nödvändigt för att säkerställa en tillfällighet heltal av ett visst intervall. Dessutom är det nödvändigt att hitta ett reguljärt uttryck bara siffrorna från området.

Beslut. Här är några uttryck på några av de vanligaste fallen:

Bestämma timme från 1 till 24 ^ (1 [0-2] | [1-9]) $
Dag i månaden 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekunder eller minuter 0-59 ^ [1-5]? [0-9] $
Ett antal från 1 till 100 * (100 |? [1-9] [0-9]) $
Dag år 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Sök IP-adresser

Uppgift. Det är nödvändigt för att avgöra om en viss sträng är en giltig IP-adress i IPv4-format i intervallet från 000.000.000.000-255.255.255.255.

Beslut. Som med alla problem på det språk som PHP, har det reguljära uttrycket många varintov. Till exempel så här:

Online kontroll av uttryck

Kontrollera regex på rätt sätt för nybörjare kan vara svårt på grund av komplexiteten i syntax, vilket skiljer sig från "vanliga" programmeringsspråk. För att lösa detta problem, det finns många online-testare uttryck som gör det enkelt att kontrollera riktigheten av mall du skapade i den verkliga texten. Programmeraren in uttrycket och verifiering av data och direkt se resultatet av behandlingen. Vanligtvis finns det presentera en referenssektion, som specificerar de reguljära uttryck, exempel och skillnader för genomförande av de utökade språken.

Men att helt förtroende onlinetjänster resultat rekommenderas inte för alla utvecklare som använder PHP. Ett reguljärt uttryck är skriven och verifieras i person, höjer kvalifikationer och garantera frånvaro av fel.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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