no.hideout-lastation.com
Paradis For Designere Og Utviklere


Beginner's Guide to Regular Expression (Regex)

Et vanlig uttrykk er et sett med tegn som danner et mønster som kan søges i en streng. Regex kan brukes til validering slik som å validere kredittkortnumre, for søk, dvs. via komplekse tekstkomponenter, og for å erstatte matchet tekst med en annen streng. Den har også god støtte for flere språk - lære den en gang, og du kan bruke den på tvers av mange programmeringsspråk.

Jeg har sett få folk ta en første titt på regex, og ignorere det helt. Jeg klandrer dem ikke; regex syntaks er kompleks og vil gjøre mange cringe akkurat som de kommandolinjene, bare verre. Men så er hver ny ting skummelt og virker umulig å lære først. Så, låner Horatius ord, jeg sier dette; Begynn, vær modig, og vent på å være klok .

Om Regex

Regex hadde sine røtter i nevrovitenskap og matematikk og ble først implementert i programmering i 1968 av Ken Thompson i QED tekstredigerer for tekstsøk. Nå er det en del av mange programmeringsspråk som Perl, Java, Python, Ruby og JavaScript.

La oss se på noen eksempler på hvordan regex fungerer.

Jeg bruker JavaScript i eksemplene mine. Nå, for å passere nybegynnernivå, må du lære alle tegnene, klassene, kvantifiseringene, modifiseringene og metodene som brukes i regex. Her er en lenke til Mozilla Developer Networks Regular Expression-side hvor du kan se et bord som inneholder alle disse. Du kan også henvise til cheatsheet på slutten av dette innlegget med de mest brukte tegnene.

La oss se et enkelt eksempel med en forklaring. Dette er en regex.

Dette er hva ovennevnte regex vil se etter i en linje, et tegn 'B' etterfulgt av minst ett av tegnene mellom (og inkludert) 'a' til 'z', 'A' til 'Z' og tallene 0 til 9.

Her er et utvalg av kamper i en linje uthevet:

Kurv , pære, B12 vitamin, BaSo4 , N BC selskap

Ovennevnte regex vil stoppe søket på Kurv og returnere en positiv respons. Det er fordi den globale modifikatoren ' g ' må spesifiseres hvis du vil at regex skal se på alle mulige kamper.

Nå, la oss se hvordan du bruker dette uttrykket i JavaScript. Testmetoden går: hvis det ble funnet en returrekke, true, annet false .

 var input = "din teststreng", regex = / B [a-zA-Z \ d] + /; hvis (! regex.test (input)) varsling ('Ingen kamp er funnet'); Ellers varsling ('En kamp er funnet'); 

La oss prøve en annen metode: match returnerer kampene som finnes i en matrise.

 var input = "din teststreng", regex = / B [a-zA-Z \ d] + / g, / * Jeg har lagt den globale modifieringen 'g' til regex for å få alle kampene * / ary = input.match (regex); hvis (ary === null) varsling ('Ingen kamp er funnet'); ellers varsel ('kampene er:' + ary.toString ()); 

Hva med streng replace ? La oss prøve det med regex nå.

 var input = "din teststreng", regex = / B [a-zA-Z \ d] + / g; varsling (input.replace (regex, "#")); 

Nedenfor er en kodepen for deg å finjustere. Klikk på "JavaScript" -fanen for å vise JS-koden.

Øvelser

For øvelser kan du google "regex øvelser" og prøve å løse dem. Her er hva du kan forvente når du prøver disse øvelsene, i henhold til vanskelighetsgrader.

grunn~~POS=TRUNC

For meg å kunne validere et passord er nok til å begynne med. Så bekreft et passord for 8 til 16 tegnlengde, alfanumerisk med ditt valg av spesialtegn tillatt.

mellom~~POS=TRUNC

Det er her du bør øve med mer virkelige verdensdata og lære noen flere regex poeng som lookahead, lookbehind påstander og matchende grupper ;

  • Bekreft PIN-koder, hexadecimaler, datoer, e-post-ID, flytpunkt.
  • Erstatt trailing null, hvite rom, et sett med matchende ord
  • Trekk ut forskjellige deler av en URL

Avansert

Du kan optimalisere de ovennevnte øvelsenees løsninger - den mest optimale regexen for e-post har tusenvis av tegn i den - så ta den så langt du føler deg komfortabel med, og det er nok . Du kan også prøve:

  • Parsing HTML eller XML (selv om det i den virkelige verden er motet til å gjøre det fordi det å bruke vanlig uttrykk for å analysere ikke-vanlig språk som HTML, vil aldri gjøre det tåpelig. Plus XML-parsing er en vanskelig oppgave, mer egnet for avanserte brukere)
  • Bytte ut koder
  • Fjerner kommentarer (unntatt IE betingede kommentarer)

Verktøy

Verktøy for å visualisere regex er en av de kuleste tingene der ute for meg. Hvis du noen gang kommer over en lang kompleks regex, kan du bare kopiere dem inn i et av disse verktøyene, og du vil kunne se strømmen tydelig. Dessuten er det mange verktøy du kan bruke til å lure med regex-koden. De viser også eksempler og cheatsheets sammen med delfunksjoner.

  • Debuggex - Det trekker et regexdiagram som per din innspilling, og du kan gjøre en rask deling til StackOverflow derfra.
  • RegExr - Du kan teste din regex med denne. Det har også referanse, et cheatsheet og eksempler for å hjelpe deg.
  • Forfylle - For øyeblikket, annet enn JavaScript, kan du også lure med Ruby og .NET versjoner av regex i den.

Regex Cheatsheet

pollettDefinisjon
[Abc]Ethvert enkelt tegn a, b eller c
[^ Abc]Enhver annen person enn a, b eller c
[A]Karakter mellom (inkludert) a til z
[^ Az]Tegn unntatt fra a til z
[AZ]Karakter mellom (inkludert) A til Z
.Ethvert enkelt tegn
\ sEn hvilken som helst whitespace karakter
\ SEnhver ikke-hvitt plass karakter
\ dEt hvilket som helst tall fra 0 til 9
\ DEnhver ikke-siffer
\ wEthvert ordkarakter (brev, tall og understrek)
\ WEnhver ikke-ord karakter
(...)Fang alt vedlagt
(A | b)Match enten a eller b
en?Tegn a er enten fraværende eller til stede en gang
en*Tegn a er enten fraværende eller tilstede flere ganger
a +Tegn a er til stede en eller flere ganger
en {3}3 forekomster av karakter en etterfølgende
en {3, }3 eller flere forekomster av karakter en etterfølgende
a {3, 6}3 til 6 forekomster av karakter en etterfølgende
^Start av streng
$Slutten av strengen
\ bEt ordgrense. Hvis et tegn er et ords siste eller første ordkarakter eller Hvis et tegn er mellom et ord eller et ikke-ordtegn
\ BIkke-ordgrense

Nå Les: Vanlige uttrykk: 30 Nyttige verktøy og ressurser

Android Fragmentation: Historien så langt

Android Fragmentation: Historien så langt

Android-fragmentering blir ofte tatt opp som Achilles 'hæl av operativsystemet . Kritikere peker ofte på fragmentering som nøkkelfaktor i hvorfor Apples IOS er det bedre mobile operativsystemet, til tross for at 81 prosent av verdens smartphones kjører på en versjon av Android eller en annen. Fak

(Tekniske og design tips)

Bruke Version Control Management i WordPress

Bruke Version Control Management i WordPress

Det pleide å være at jeg var veldig motvillig til å bruke Git under utviklingen min; Jeg skjønner at jeg ikke trenger Git, og kan ikke finne noen overbevisende grunn til å bruke den - det vil si til kodene gikk haywire som får meg til å gå tilbake til forrige versjon. I slike tilfeller er Git ekstremt nyttig.Git er

(Tekniske og design tips)