Krulhaken in reguliere expressies van JavaScript
Operatoren '+', '*', '?'
zijn goed, maar met hen is het onmogelijk
een specifiek aantal herhalingen aan te geven. In dit geval
komt de operator {} te hulp.
Het werkt als volgt: {5}
- vijf herhalingen, {2,5} – herhaalt zich
van twee tot vijf (beide inclusief), {2,}
- herhaalt zich twee keer of vaker. Let op
dat deze variant - {,2}
- niet bestaat. Bekijk de voorbeelden:
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
letter 'x', letter 'a' een
of twee keer, letter 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Als resultaat wordt het volgende in de variabele geschreven:
'xx ! ! xaaax'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
letter 'x', letter 'a' twee
keer of vaker, letter 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Als resultaat wordt het volgende in de variabele geschreven:
'xx xax ! !'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
letter 'x', letter 'a' drie
keer, letter 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Als resultaat wordt het volgende in de variabele geschreven:
'xx xax xaax !'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
letter 'a' tien keer:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Als resultaat wordt het volgende in de variabele geschreven:
'aaa ! aaa'
Voorbeeld
In dit voorbeeld wilde de auteur van de code zo'n patroon:
letter 'x', letter 'a' drie
keer of minder, letter 'x',
maar helaas werkt dit - {,3} - niet.
Het moet expliciet worden aangegeven:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Als resultaat wordt het volgende in de variabele geschreven:
'xx ! ! !'
Voorbeeld
Nul is ook toegestaan:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! !'
Praktische opdrachten
Gegeven een string:
let str = 'aa aba abba abbba abbbba abbbbba';
Schrijf een reguliere expressie die de strings vindt
'abba', 'abbba', 'abbbba'
en alleen deze.
Gegeven een string:
let str = 'aa aba abba abbba abbbba abbbbba';
Schrijf een reguliere expressie die strings vindt
van het type 'aba', waarin 'b' voorkomt
minder dan 3 keer (inclusief).
Gegeven een string:
let str = 'aa aba abba abbba abbbba abbbbba';
Schrijf een reguliere expressie die strings vindt
van het type 'aba', waarin 'b' voorkomt
meer dan 4 keer (inclusief).