DatamaskinerProgrammering

PHP (regex) - hva er det? Eksempler og sjekke regulære uttrykk

Når du arbeider med tekst i enhver moderne programmeringsspråk, utviklere stadig møte med målene for validering av inndata for overholdelse av ønsket mønster, søk og erstatt test fragmenter og andre typer arbeidsoperasjoner karakter informasjon. Utvikle dine egne validerings algoritmer fører til tap av tid, koden kompatibilitet og kompleksitet i sin utvikling og modernisering.

Den raske utviklingen av Internett og web-design språk som kreves etablering av allsidige og kompakte hjelp av tekstbehandling med et minimum som kreves for denne koden. Det er ikke noe unntak, og er populær blant nybegynnere og profesjonelle utviklere av PHP språk. Det vanlige uttrykket språk som tekstmaler for å forenkle oppgaven med å håndtere tekst og redusere kode for titalls og hundrevis av linjer. Mange problemer kan ikke løses i det hele tatt uten.

Regular Expressions i PHP

PHP språket har tre mekanismer for å arbeide med regulære uttrykk - «ereg», «mb_ereg» og «preg». Den vanligste er grensesnittet «preg», hvis funksjoner gir tilgang til biblioteket av PCRE regulære uttrykk støtte, opprinnelig utviklet for Perl språket, som er inkludert i PHP-pakken. Preg økende funksjoner i en gitt tekststreng matching, i henhold til et visst mønster i språket regulære uttrykk.

Grunnleggende syntaks

Som en del av et kort artikkel er det umulig å beskrive i detalj hele regulære uttrykk syntaks for dette er det en spesiell litteratur. Vi presenterer bare de viktigste elementene for å vise muligheter for utbygger og forstå kode eksempler.

I PHP regulære uttrykk er formelt definert meget vanskelig, og derfor forenkle beskrivelsen. Et regulært uttrykk er en tekststreng. Den består av en egen separator mal og modifiserings indikerer måte å håndtere det. Mulig inkludering i de ulike alternativene og gjentakelser av mønstre.

For eksempel, i ekspresjons / \ d {3} - \ d {2} - \ d {2} / m divider er "/", etterfulgt av malen, og symbolet «m» er den modifiserende middel.

All kraften av regulære uttrykk er kodet med meta-tegn. Hovedspråket metategn er backslash - "\". Det endrer typen av følgende tegn på den motsatte (f.eks. E. konvertert til et vanlig karakter wildcard og vice versa). En annen viktig metategn er en rett linje «|», angir alternativ mal. Flere eksempler på meta-tegn:

^ Begynn objekt eller en streng
( Begynn subpattern
) End subpattern
{ start kvantifikator
} End kvantifikator
\ d desimaltall 0-9
\ D alle tegn som ikke er et tall
\ s tom symbol, plass, tab,
\ w symbol ordbok

PHP, behandle regulære uttrykk, plass anses som en egen gyldig tegn, så uttrykket av XYZ og ABC HVOR er forskjellige.

subpatterns

I PHP regulære subpatterns av parentes, og de er noen ganger kalt "underuttrykk". Utføre følgende funksjoner:

  1. Tildelings alternativer. For eksempel, varmen mønster (noe | Bird |) faller sammen med ordene "varme", "Firebird" og "hot". Og uten konsollene vil det bare være en tom streng, "fugl" og "hot".

  2. "Spectacular" subpattern. Dette betyr at hvis mønsteret matchet treng, deretter returnerer alle kampene. For klarhet, gir vi et eksempel. Gitt følgende regulære uttrykk: vinneren mottar ((gull | gullbelagt) (medalje | cup)) - og strengen for kampene, "vinneren får en gullmedalje." I tillegg til det opprinnelige uttrykket, vil søkeresultatene utstedes: "Gold Medal", "medaljer", "gull".

Operatører repetisjoner (kvadrifikatory)

I sammenstillingen av regulære uttrykk er ofte nødvendig for å analysere den repetisjon av tall og symboler. Dette er ikke et problem, hvis ikke mange repetisjoner. Men hva de skal gjøre når vi ikke kjenner sin eksakte tall? I dette tilfellet er det nødvendig å bruke spesielle metategn.

For en beskrivelse av repetisjoner brukes kvadrifikatory - metategn for å angi antall. Kvadrifikatory er av to typer:

  • vanlig i parentes;
  • redusert.

Samlet kvantifikator rørt ved minimum og maksimum antall tillatte repetisjoner element i form av to tallene i parenteser, for eksempel x {2,5}. Hvis det maksimale antall repetisjoner ikke er kjent, er det andre argumentet ikke spesifisert: x {2}.

Forkortede quantifiers er symboler for de mest vanlige av repetisjoner for å unngå unødvendig overbelastning syntaks. Vanligvis er det tre kutt:

1. * - null eller flere repetisjoner, noe som er ekvivalent med {0}.

2. + - ett eller flere repetisjoner, dvs. {1} ...

3.? - ingen eller bare en repetisjons - {0,1}.

eksempler regex

For de som lærer regulære uttrykk, eksempler - det beste lærebok. Vi gir noen som viser sine muligheter med et minimum av innsats. All kode er fullt kompatibel med versjoner av PHP 4.x og nyere. For å fullt ut forstå syntaks og bruk av alle språk funksjonene vi anbefaler boken av J .. Friedl, "regulære uttrykk", som ferdigbehandlet syntaks, og det finnes eksempler på regulære uttrykk ikke bare PHP, men også for en Python, Perl, MySQL, Java, Ruby, og C #.

Validering e-postadresse

Oppgave. Det er en Internett-side der de besøkende blir forespurt adresse e-post. Regulære uttrykk må sjekke riktigheten av adressene før du sender meldinger. Sjekk garanterer ikke at den angitte postboksen faktisk eksisterer og mottar meldinger. Men luke ut åpenbart feil adresser det kan.

Beslutning. Som med alle programmeringsspråk, i PHP regex e-postadressen verifisering kan implementeres på forskjellige måter, og eksemplene i denne artikkelen er ikke den endelige og eneste valg. Derfor, i hvert tilfelle, skal vi gi en liste med krav som må tas i betraktning når du programmerer og konkrete gjennomføringen avhenger helt av utbygger.

Dermed blir uttrykket som tester en gyldig e-post, bør du sjekke følgende vilkår:

  1. Nærværet i start linje @ symbol, og det finnes ingen hull.
  2. Domenedelen av adressen til @ -symbolet, bare inneholder gyldige tegn for domenenavn. Det samme gjelder for brukerens navn.
  3. Ved kontroll av navnet er nødvendig for å bestemme tilstedeværelsen av spesielle tegn som for eksempel en apostrof eller vertikal linje. Slike symboler er potensielt farlig og kan finnes i slike typer angrep som SQL-injeksjon. Unngå adresser.
  4. brukernavn tillater bare ett punkt, som ikke kan være den første eller siste tegnet i strengen.
  5. Domenenavnet må inneholde minst to og ikke mer enn seks tegn.

Eksempelvis tar hensyn til alle disse forholdene kan sees i den følgende figur.

Validering av en URL

Oppgave. Sjekk om den angitte tekststreng er en gyldig adresse URL. Nok en gang ser vi at regulære uttrykk URL-kontroll kan gjennomføres på ulike måter.

Beslutning. Vårt endelige versjonen er som følger:

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

Nå analysere komponentene i mer detalj ved hjelp av tegningen.

krav 1 Før URL ikke skulle ha noen tegn
Gjør krav 2 Sjekk at det finnes obligatorisk prefikset «http»
punkt 3 Det må ikke være tegn
Gjør krav 4 Hvis det «s», URL peker på en sikker tilkobling «https»
krav 5 Må del av "//"
krav 6 ingen tegn
s. 7-9 Bekreftelse av den første domenet og tilstedeværelsen av punktet
p.10-13 Kontrollere domenet til å skrive andre nivå, og poenget
p.14-17

Filstrukturen URL - et sett med tall, bokstaver, understrek, komma, punktum, og en skråstrek på slutten

Sjekk kredittkortnumre

Oppgave. Du må gjennomføre validering av oppgitt kredittkortnummeret av de vanligste betalingssystemene. En variant bare for kort Visa og MasterCard.

Beslutning. Når du oppretter uttrykket du må ta hensyn til mulig tilstedeværelse av hull i inngangsrommet. Sifrene på kartet er delt inn i grupper for enklere lesing og diktat. Derfor er det naturlig at en person kan prøve å legge inn et nummer på denne måten (ie. E. Bruk mellomrom).

Skriv en universell uttrykk som tar hensyn til de mulige mellomrom eller bindestrek, er mer komplisert enn bare å forkaste alle tegn unntatt sifre. Derfor anbefaler vi å bruke et wildcard uttrykk / D, som fjerner alle tegn unntatt sifre.

Nå kan du gå direkte til sjekknummeret. Alle bedrifter, kredittkortselskaper bruke et unikt nummer format. I eksempelet er det brukt, og kunden trenger ikke å oppgi navnet på selskapet - det bestemmes av nummeret. Visa-kort alltid begynne med tallene 4 og har en lengde på 13 eller 16 sifre. MasterCard begynner i størrelsesorden 51-55 med en lang rekke 16. Som et resultat, får vi følgende uttrykk:

Før behandlingen av orden kan bli ytterligere testet siste sifrene i tallet, som er beregnet på Luhn algoritmen.

Bekrefter telefonnummer

Oppgave. Kontrollere riktigheten av det angitte telefonnummeret.

Beslutning. Antall sifre i de faste og mobile telefonnumre varierer betydelig avhengig av landet, så universelt sjekk ved hjelp av regulære uttrykk, telefonnummer korrekt umulig. Men internasjonale numre har en streng format og perfekt for å sjekke mønsteret. Enda mer slik at flere og flere nasjonale teleoperatørene prøver å møte den samme standarden. Romstruktur er som følger:

+ CCC.NNNNNNNNNNxEEEE, der:

- C - er landkoden bestående av 1-3 sifre.

- N - tall opp til 14 sifre.

- E - valgfri forlengelse.

Pluss er et uunnværlig element, og fortegnet X er til stede bare når det er nødvendig forlengelse.

Som et resultat har vi følgende uttrykk:

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

Tallene i området

Oppgave. Det er nødvendig å sikre sammentreff heltall fra et bestemt område. I tillegg er det nødvendig å finne et regulært uttrykk bare numrene fra serien.

Beslutning. Her er noen uttrykk til noen av de mest vanlige tilfeller:

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 antall fra 1 til 100 (100 |? [1-9] [0-9]) $
Dag av året 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Søk IP-adresser

Oppgave. Det er nødvendig å bestemme hvorvidt en gitt streng er en gyldig IP-adresse i IPv4 format i området fra 000.000.000.000-255.255.255.255.

Beslutning. Som med alle problem i språket av PHP, har det regulære uttrykket mange varintov. For eksempel denne:

Online kontroll av uttrykk

Sjekk regex riktig for nybegynnere kan være vanskelig på grunn av kompleksiteten i syntaks, som skiller seg fra "vanlige" programmeringsspråk. For å løse dette problemet, er det mange online testere uttrykk som gjør det enkelt å kontrollere riktigheten av malen du opprettet i den virkelige teksten. Pro- grammereren angir uttrykket og verifikasjonsdata og umiddelbart se resultatet av behandlingen. Vanligvis er det presentere en referanse del, hvilke detaljer de regulære uttrykk, eksempler og implementering forskjeller for de utvidede språk.

Men for å fullt tillit nettjenester resultatene ikke anbefales for alle utviklere som bruker PHP. Et regulært uttrykk er skrevet og bekreftet i person, hever kvalifisering og garanterer fravær av feil.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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