Klammerparenteser i JavaScript reguljära uttryck
Operatorerna '+', '*', '?'
är bra, men med dem kan man inte specificera
ett exakt antal upprepningar. I det här fallet
kommer operatorn {} till undsättning.
Den fungerar på följande sätt: {5}
- fem upprepningar, {2,5} – upprepas
från två till fem (båda inkluderade), {2,}
- upprepas två eller fler gånger. Var uppmärksam
på att det inte finns något sådant alternativ - {,2}
- Se exempel:
Exempel
I detta exempel ser sökmönstret ut så här:
bokstaven 'x', bokstaven 'a' en
eller två gånger, bokstaven 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'xx ! ! xaaax'
Exempel
I detta exempel ser sökmönstret ut så här:
bokstaven 'x', bokstaven 'a' två
gånger eller fler, bokstaven 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'xx xax ! !'
Exempel
I detta exempel ser sökmönstret ut så här:
bokstaven 'x', bokstaven 'a' tre
gånger, bokstaven 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'xx xax xaax !'
Exempel
I detta exempel ser sökmönstret ut så här:
bokstaven 'a' tio gånger:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'aaa ! aaa'
Exempel
I detta exempel ville författaren av koden ha ett sådant mönster:
bokstaven 'x', bokstaven 'a' tre
gånger eller färre, bokstaven 'x',
men tyvärr fungerar inte {,3}.
Det måste anges explicit:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'xx ! ! !'
Exempel
Noll är också tillåtet:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! ! !'
Praktiska uppgifter
Given en sträng:
let str = 'aa aba abba abbba abbbba abbbbba';
Skriv ett reguljärt uttryck som hittar strängarna
'abba', 'abbba', 'abbbba'
och endast dessa.
Given en sträng:
let str = 'aa aba abba abbba abbbba abbbbba';
Skriv ett reguljärt uttryck som hittar strängar
av typen 'aba', där 'b' förekommer
färre än 3 gånger (inklusive).
Given en sträng:
let str = 'aa aba abba abbba abbbba abbbbba';
Skriv ett reguljärt uttryck som hittar strängar
av typen 'aba', där 'b' förekommer
fler än 4 gånger (inklusive).