Reguljära Uttryck: En Djupdykning
Att arbeta med reguljära uttryck kan ibland kännas överväldigande. Men frukta icke! Vi ska tillsammans utforska detta kraftfulla verktyg och avmystifiera de till synes kryptiska mönstren. Vi kommer att reda ut vad varje symbol i ett reguljärt uttryck representerar.
Efter att ha tagit del av denna artikel kommer du att kunna konstruera egna reguljära uttryck och använda dem för dina behov. Dessutom kommer vi att presentera några användbara verktyg online för att testa och förfina dina uttryck.
Introduktion till Reguljära Uttryck
Reguljära uttryck, ofta förkortat till RegEx, är sekvenser av tecken som definierar ett sökmönster för textsträngar. Dessa mönster kan användas för att identifiera specifika tecken, ord eller sekvenser i text.
Till exempel, om du vill veta om en text innehåller ordet ”äpple”, kan du använda uttrycket ”/äpple/” för att söka igenom texten. Ett annat exempel är uttrycket ”/[0-9]/” som kan användas för att kontrollera om en sträng innehåller en siffra mellan 0 och 9.
Användningsområden för Reguljära Uttryck
Reguljära uttryck är oerhört användbara i många aspekter av modern webbutveckling. De används bland annat för validering av formulär, i sökmotorer, vid lexikalisk analys i utvecklingsmiljöer, i textredigerare och dokumenthanteringssystem.
Vi har alla använt ”CTRL + F” otaliga gånger för att söka efter ett specifikt ord eller en fras i ett dokument eller kodavsnitt. Denna vanliga operation är ett utmärkt exempel på hur reguljära uttryck används i praktiken.
Innan vi går vidare, låt oss kika på ett vanligt reguljärt uttryck.
Kan du gissa vad detta uttryck gör?
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$
Ingen fara om du inte kan dechiffrera det just nu. Efter att ha läst den här artikeln kommer du garanterat att förstå.
Låt oss börja med grunderna, de olika symbolerna i RegEx.
Symboler och Tecken
Låt oss titta närmare på de olika symboler som används i det tidigare exemplet:
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$
Detta uttryck består av en mängd symboler, tecken och så kallade tokens. Låt oss bryta ner vad de betyder:
Tecken | Betydelse |
^ | Anger början av en sträng. |
(…) | En grupp som fångar upp det som finns inom parenteserna. |
[…] | En uppsättning tecken där alla kan matcha. Till exempel matchar [abc] a, b eller c. |
a-z | Små bokstäver från a till z. RegEx är skiftlägeskänsligt. |
A-Z | Stora bokstäver från A till Z. |
0-9 | Siffror från 0 till 9. |
_ | Matcherar tecknet _. |
\ | En escape-karaktär. |
. | Matcherar tecknet ”.”. Används eftersom ”.” i sig är en token som matchar vilket tecken som helst. |
+ | En kvantifierare som matchar en eller flera förekomster. T.ex. betyder a+ en eller flera ”a”. |
– | Matcherar tecknet ”-”. |
@ | Matcherar tecknet ”@”. |
{} | En kvantifierare som anger antalet förekomster. a{3} matchar exakt tre ”a”. |
$ | Anger slutet av en sträng. |
Analys av Exemplet
Nu när vi känner till grunderna, låt oss försöka dechiffrera det tidigare reguljära uttrycket:
^([a-zA-Z0-9_-.]+)
innebär att vi söker efter en sträng som börjar med minst en eller flera alfanumeriska tecken, understreck, bindestreck eller punkter. Exempelvis ”användare_namn.01” skulle matcha. Notera att inte alla tecken måste finnas med, utan endast en av dem[a-zA-Z0-9_-.]
.- @ matchar ett ”@” tecken. Lägger vi till det till föregående exempel kan vi få något liknande
[email protected]
([a-zA-Z0-9_-.]+)
liknar den första punkten, vilket betyder att vi letar efter en sträng med en eller flera alfanumeriska tecken, understreck, bindestreck eller punkter. Med tillägget till exemplet kan det se ut så här:[email protected]
- Som du kanske gissat vid det här laget så börjar det likna ett e-postmönster. Vidare, matchar
.
karaktären ”.”. Om vi fortsätter med exemplet kan det likna[email protected]
([a-zA-Z]{2,5})$
innebär att strängen ska avslutas med 2 till 5 bokstäver, antingen stora eller små. Slutför vi exemplet får vi något som[email protected]
, vilket är ett vanligt mönster för e-postadresser.
Genom att kombinera dessa delar ser vi att vi letar efter ett mönster som matchar en e-postadress. Vi kan alltså använda detta uttryck för att validera e-postadresser. Om en given e-postadress matchar mönstret, kan vi betrakta det som en giltig adress.
PS – Detta mönster fungerar för de vanligaste e-postformaten på webben.
Token-Typer
Det finns många olika typer av tokens som kan kombineras på olika sätt för att definiera komplexa uttryck. Låt oss nu titta på några av de olika kategorierna av tokens och de vanligaste symbolerna inom varje kategori.
Grundläggande Tokens
Låt oss starta med de mest grundläggande. Dessa tokens används i nästan alla reguljära uttryck och är viktiga att förstå.
Tecken | Betydelse |
\r | Matchar ett vagnreturtecken. |