ComputereProgrammering

PHP (regex) - hvad er det? Eksempler og kontrol regulære udtryk

Når du arbejder med tekst i enhver moderne programmeringssprog, udviklere konstant mødes med målene i inputvalidering for overholdelse af det ønskede mønster, søg og erstat test fragmenter og andre typer af behandlinger af karakter information. Udvikle dine egne validering algoritmer fører til tab af tid, koden kompatibilitet og kompleksitet i dets udvikling og modernisering.

Den hurtige udvikling af internettet og WEB-design sprog krævede oprettelse af alsidige og kompakte hjælp af tekstbehandling med et minimum kræves til denne kode. Det er ingen undtagelse, og er populær blandt begyndere og professionelle udviklere af PHP sprog. Den regulære udtryk sprog som tekstskabeloner at forenkle opgaven med håndtering af tekst og reducere kode for tiere og hundreder af linjer. Mange problemer kan ikke løses på alle uden det.

Regulære udtryk i PHP

PHP sprog har tre mekanismer til at arbejde med regulære udtryk - «ereg», «mb_ereg» og «preg». Den mest almindelige er grænsefladen «preg», hvis funktioner giver adgang til biblioteket af PCRE regulære udtryk støtte, oprindeligt udviklet til Perl sprog, som er inkluderet i PHP-pakken. Preg-søger funktioner i en given tekststreng matching, efter en bestemt mønster på det sprog, regulære udtryk.

syntaks Grundlæggende

Som en del af en kort artikel er det umuligt at beskrive i detaljer hele regulære udtryk syntaks, for det er der en særlig litteratur. Vi præsenterer kun de vigtigste elementer for at vise mulighederne for bygherren og forstå de kodeeksempler.

I PHP regulært udtryk er formelt defineret meget vanskelig, og derfor forenkle beskrivelsen. Et regulært udtryk er en tekststreng. Den består af en dedikeret separator skabelon og modifier der angiver måde at håndtere det. Eventuel optagelse i de forskellige alternativer og gentagelser af mønstre.

For eksempel i ekspression / \ d {3} - \ d {2} - \ d {2} / m divider er "/", efterfulgt af skabelonen, og symbolet «m» er modifikatoren.

Al magt regulære udtryk er kodet med meta-tegn. Hovedsproget metategn er backslash - "\". Det ændrer typen af følgende tegn på den modsatte (dvs.. E. Omregnet til en almindelig karakter wildcard og omvendt). En anden vigtig metategn er en lige linje «|», angiver den alternative skabelon. Flere eksempler på meta-tegn:

^ Start objekt eller en snor
( Start undermønster
) End undermønster
{ Start kvantor
} End kvantor
\ d decimal ciffer fra 0 til 9
\ D alle tegn, der er ikke et tal
\ s tom symbol, plads, fane,
\ w symbol ordbog

PHP, forarbejdning regulære udtryk, plads betragtes som en særskilt gyldigt tegn, så udtrykket af XYZ og ABC HVOR er forskellige.

subpatterns

I PHP regulære subpatterns ved parenteser, og de kaldes også "deludtryk". Udfør følgende funktioner:

  1. Fordeling alternativer. For eksempel varme mønster (noget | Bird |) falder sammen med ordene "varme", "Firebird" og "hot". Og uden beslagene vil det kun være en tom streng, "fugl" og "hot".

  2. "Opsigtsvækkende" undermønster. Det betyder, at hvis mønsteret matchede delstreng, derefter returnerer alle kampe. For klarhedens skyld, giver vi et eksempel. I betragtning af den følgende regulære udtryk: vinderen modtager ((guld | forgyldt) (medalje | cup)) - og snoren til kampe, "vinderen får en guldmedalje." Ud over den indledende sætning, vil blive udstedt søgeresultaterne: "guldmedalje", "medaljer", "guld".

Operatører gentagelser (kvadrifikatory)

Ved udarbejdelsen det regulære udtryk er ofte nødvendigt at analysere en gentagelse af tal og symboler. Dette er ikke et problem, hvis ikke en masse gentagelser. Men hvad de skal gøre, når vi ikke kender deres nøjagtige antal? I dette tilfælde er det nødvendigt at bruge specielle metategn.

For en beskrivelse af gentagelser brugte kvadrifikatory - metategn til at angive antallet. Kvadrifikatory er af to typer:

  • fælles i parentes;
  • reduceret.

Samlet kvantifikator rørt af det minimale og maksimale antal tilladte gentagelser element i form af to tal i parenteser, såsom x {2,5}. Hvis det maksimale antal gentagelser ikke er kendt, er det andet argument ikke specificeret: x {2}.

Forkortede kvantorer er symboler for de mest almindelige af gentagelser for at undgå unødvendig overbelastning syntaks. Normalt er der tre udskæringer:

1. * - nul eller flere gentagelser, hvilket svarer til {0,}.

2. + - en eller flere gentagelser, dvs. {1} ...

3.? - nul eller kun én repeat - {0,1}.

eksempler regex

For dem, der lærer regulære udtryk, eksempler - den bedste lærebog. Vi giver et par, der viser deres muligheder med et minimum af indsats. Al kode er fuldt kompatibel med versioner af PHP 4.x og derover. For helt at forstå syntaksen og brugen af alle sprog funktioner, vi anbefaler bogen af J .. Friedl, "regulære udtryk", som fuldt ud betragtes som syntaks, og der er eksempler på regulære udtryk ikke kun PHP, men også for en Python, Perl, MySQL, Java, Ruby, og C #.

Validering E-mail-adresse

Opgave. Der er en Internet side, hvor den besøgende der anmodes adresse email. Regulært udtryk skal kontrollere rigtigheden af de adresser, før du sender beskeder. Check garanterer ikke, at den angivne postkasse rent faktisk eksisterer og modtager meddelelser. Men frasortere åbenlyst forkerte adresser det kan.

Afgørelse. Som med alle programmeringssprog, i PHP regex email-adresse verifikation kan implementeres på forskellige måder, og eksemplerne i denne artikel, er ikke det endelige og eneste valg. Derfor, i hvert enkelt tilfælde, skal vi levere en liste over krav, der skal tages i betragtning ved programmering og konkrete gennemførelse afhænger helt af udvikleren.

Således er udtryk, der tester en gyldig e-mail, bør du kontrollere følgende betingelser:

  1. Tilstedeværelsen i startopstillingen @ -symbolet, og der er ingen huller.
  2. Domænet del af adressen på den @ symbol, indeholder kun gyldige tegn for domænenavne. Det samme gælder for brugerens navn.
  3. Ved kontrol af brugernavn er nødvendigt for at bestemme tilstedeværelsen af specialtegn såsom en apostrof eller vertikal linje. Sådanne symboler er potentielt farlige og kan være indeholdt i sådanne former for angreb, der SQL-injektion. Undgå adresser.
  4. brugernavne tillader kun ét punkt, som ikke kan være den første eller sidste tegn i strengen.
  5. Domænenavnet skal indeholde mindst to og højst seks tegn.

Eksempel under hensyntagen til alle disse betingelser kan ses i den følgende figur.

Validering af en URL

Opgave. Kontroller, om den angivne tekststreng er en gyldig adresse webadresse. Endnu engang kan vi konstatere, at regulære udtryk URL-kontrol kan implementeres på forskellige måder.

Afgørelse. Vores endelige version er som følger:

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

Nu analysere dets komponenter mere detaljeret ved hjælp af tegningen.

krav 1 Før URL'en ikke skal have nogen tegn
krav 2 Kontroller tilstedeværelsen af den obligatoriske præfiks «http»
punkt 3 Der må ikke være nogen symboler
krav 4 Hvis der «s», URL peger på en sikker forbindelse «https»
krav 5 Nødvendig del af "//"
krav 6 ingen tegn
s. 7-9 Verificering af første niveau domæne og tilstedeværelsen af punkt
p.10-13 Kontrol af domæne skrive det andet niveau, og det punkt
p.14-17

URL Fil struktur - et sæt af tal, bogstaver understregninger, bindestreger, prikker, og en skråstreg i slutningen

Kontroller kreditkortnumre

Opgave. Du er nødt til at gennemføre validering af det indtastede kortnummer af de mest almindelige betalingssystemer. En variant kun for kort Visa og MasterCard.

Afgørelse. Når du opretter det udtryk, du har brug for at tage hensyn til den mulige forekomst af huller i input rum. Cifrene på kortet er opdelt i grupper for at lette læsning og diktat. Derfor er det naturligt, at en person kan forsøge at indtaste et nummer på denne måde (dvs.. E. Brug mellemrum).

Skriv en universel udtryk, der tager hensyn til de mulige mellemrum eller bindestreger, er mere kompliceret end blot at kassere alle tegn undtagen cifre. Derfor anbefaler vi at bruge et wildcard udtryk / D, som fjerner alle tegn undtagen cifre.

Nu kan du gå direkte til check nummer. Alle virksomheder, kreditkort udstedere bruge et unikt nummer format. I eksemplet er det brugt, og kunden ikke behøver at indtaste navnet på virksomheden - det er bestemt af nummeret. Visa-kort altid begynde med tallene 4 og har en længde på 13 eller 16 cifre. MasterCard begynder i intervallet 51-55 med en lang nummer 16. Som et resultat, får vi følgende udtryk:

Før behandling af ordren kan yderligere testet de sidste cifre i nummeret, der er beregnet på Luhn algoritme.

Bekræfter telefonnummer

Opgave. Kontrol rigtigheden af det indtastede telefonnummer.

Afgørelse. Antallet af cifre i de faste og mobile telefonnumre varierer betydeligt afhængigt af landet, så universelt tjek bruge regulære udtryk, telefonnummer korrekt umuligt. Men internationale numre har en streng format og perfekt til kontrol mønstret. Endnu mere, så flere og flere nationale teleoperatører forsøger at opfylde den samme standard. Room struktur er som følger:

+ CCC.NNNNNNNNNNxEEEE, hvor:

- C - er landekoden bestående af 1-3 cifre.

- N - tal op til 14 cifre.

- E - frivillig forlængelse.

Plus er et uundværligt element, og tegnet X er kun til stede når der er behov forlængelse.

Som et resultat har vi følgende udtryk:

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

Tallene i området

Opgave. Det er nødvendigt at sikre sammenfald helt tal på et bestemt område. Desuden er det nødvendigt at finde et regulært udtryk kun tallene fra området.

Afgørelse. Her er et par udtryk til nogle af de mest almindelige tilfælde:

Bestemme time fra 1 til 24 ^ (1 [0-2] | [1-9]) $
Dag i måneden 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekunder eller minutter 0-59 ^ [1-5]? [0-9] $
Et antal fra 1 til 100 * (100 |? [1-9] [0-9]) $
Dag i år 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Søg IP-adresser

Opgave. Det er nødvendigt at afgøre, om en given streng er en gyldig IP-adresse i IPv4-format i intervallet fra 000.000.000.000-255.255.255.255.

Afgørelse. Som med ethvert problem på det sprog, PHP, det regulære udtryk har mange varintov. For eksempel er dette:

Online kontrol af udtryk

Tjek regex korrekt for begyndere kan være vanskelig på grund af kompleksiteten af syntaksen, som adskiller sig fra "almindelige" programmeringssprog. For at løse dette problem, er der mange online testers udtryk, der gør det nemt at kontrollere rigtigheden af den skabelon, du oprettede i den virkelige tekst. Programmøren kommer ind i udtryk og verifikation af data og straks se resultatet af behandlingen. Normalt er der præsentere en reference sektion, som beskriver de regulære udtryk, eksempler og forskelle implementering for de mest udvidede sprog.

Men for fuldt ud tillid onlinetjenester resultater anbefales ikke for alle udviklere, der bruger PHP. Et regulært udtryk er skrevet og verificeret i person, hæver kvalifikation og garantere fravær af fejl.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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