Introduktion til regulære udtryk i JavaScript
Regulære udtryk er kommandoer til komplekse søgninger og erstatninger (eller bare søgninger). De gør det muligt at gøre meget interessante ting, men er desværre ret svære at lære.
Der findes flere JavaScript-metoder til
arbejde med regulære udtryk. Vi vil begynde
at stifte bekendtskab med dem ved hjælp af eksemplet replace
- du kender allerede denne metode: den tager
hvad der skal erstattes som første parameter, og anden parameter
- hvad det skal erstattes med. Og selve metoden anvendes
på den streng, hvor der foretages erstatning:
'bab'.replace('a', '!'); // returnerer 'b!b'
Som første parameter til denne metode kan man sende
ikke bare en streng, men et regulært udtryk.
Et regulært udtryk er et sæt
kommandoer placeret inden for skråstrege /. Disse
skråstrege kaldes afgrænsere for regulære
udtryk.
De regulære udtryk selv består af to typer af tegn: dem, der betegner sig selv, og af kommando-tegn, som kaldes specialtegn.
Bogstaver og tal betegner sig selv. I det følgende
eksempel vil vi erstatte bogstavet 'a' med ! ved hjælp af et regulært udtryk:
'bab'.replace(/a/, '!'); // returnerer 'b!b'
Men et punktum er et specialtegn
og betegner ethvert tegn. I det følgende
eksempel finder vi en streng efter dette mønster:
bogstavet 'x', derefter ethvert tegn, derefter
bogstavet 'x' igen:
'xax eee'.replace(/x.x/, '!'); // returnerer '! eee'
Efter afgrænserne kan man skrive modifikatorer
- kommandoer, der ændrer de generelle egenskaber
for det regulære udtryk. For eksempel aktiverer modifikatoren
g tilstanden for global søgning
og erstatning - uden den finder det regulære udtryk kun
den første match, men med den - alle matches.
I det følgende eksempel er modifikatoren g ikke angivet, og det regulære udtryk finder kun den første match:
'aab'.replace(/a/, '!'); // returnerer '!ab'
Og nu finder det regulære udtryk alle matches:
'aab'.replace(/a/g, '!'); // returnerer '!!b'
Givet strengen:
let str = 'ahb acb aeb aeeb adcb axeb';
Skriv et regulært udtryk, der finder strengene
'ahb', 'acb', 'aeb'
efter mønsteret: bogstavet 'a', ethvert tegn,
bogstavet 'b'.
Givet strengen:
let str = 'aba aca aea abba adca abea';
Skriv et regulært udtryk, der finder strengene
'abba', 'adca', 'abea'
efter mønsteret: bogstavet 'a', 2
ethvert tegn, bogstavet 'a'.
Givet strengen:
let str = 'aba aca aea abba adca abea';
Skriv et regulært udtryk, der finder strengene
'abba' og 'abea', uden at fange
'adca'.