Krøllede parenteser i regulære udtryk i JavaScript
Operatørerne '+', '*', '?'
er gode, men med dem kan man ikke angive
et specifikt antal gentagelser. I dette tilfælde
kommer operatoren {} til undsætning.
Den fungerer som følger: {5}
- fem gentagelser, {2,5} – gentages
fra to til fem (begge inklusive), {2,}
- gentages to gange eller derover. Læg mærke til
at en sådan variant - {,2}
- ikke findes. Se eksemplerne:
Eksempel
I dette eksempel ser søgemønsteret sådan ud:
bogstavet 'x', bogstavet 'a' en
eller to gange, bogstavet 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Resultatet i variablen vil være følgende:
'xx ! ! xaaax'
Eksempel
I dette eksempel ser søgemønsteret sådan ud:
bogstavet 'x', bogstavet 'a' to
gange eller derover, bogstavet 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Resultatet i variablen vil være følgende:
'xx xax ! !'
Eksempel
I dette eksempel ser søgemønsteret sådan ud:
bogstavet 'x', bogstavet 'a' tre
gange, bogstavet 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Resultatet i variablen vil være følgende:
'xx xax xaax !'
Eksempel
I dette eksempel ser søgemønsteret sådan ud:
bogstavet 'a' ti gange:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Resultatet i variablen vil være følgende:
'aaa ! aaa'
Eksempel
I dette eksempel ønskede kodeforfatteren dette mønster:
bogstavet 'x', bogstavet 'a' tre
gange eller derunder, bogstavet 'x',
men desværre virker {,3} ikke.
Man skal angive det eksplicit:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Resultatet i variablen vil være følgende:
'xx ! ! !'
Eksempel
Nul er også tilladt:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Resultatet i variablen vil være følgende:
'! ! ! !'
Praktiske opgaver
Givet en streng:
let str = 'aa aba abba abbba abbbba abbbbba';
Skriv et regulært udtryk, der finder strengene
'abba', 'abbba', 'abbbba'
og kun dem.
Givet en streng:
let str = 'aa aba abba abbba abbbba abbbbba';
Skriv et regulært udtryk, der finder strengene
af typen 'aba', hvor 'b' forekommer
mindre end 3 gange (inklusive).
Givet en streng:
let str = 'aa aba abba abbba abbbba abbbbba';
Skriv et regulært udtryk, der finder strengene
af typen 'aba', hvor 'b' forekommer
mere end 4 gange (inklusive).