Aaltosulkeet JavaScriptin säännöllisissä lausekkeissa
Operaattorit '+', '*', '?'
ovat hyviä, mutta niillä ei voida määrittää
tarkkaa toistomäärää. Tässä tapauksessa
operaattori {} tulee apuun.
Se toimii seuraavasti: {5}
- viisi toistoa, {2,5} – toistuu
kahdesta viiteen (mukaan lukien molemmat), {2,}
- toistuu kaksi kertaa tai useammin. Huomaa,
että tällaista muotoa - {,2}
- ei ole. Katso esimerkkejä:
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
kirjain 'x', kirjain 'a' yksi
tai kaksi kertaa, kirjain 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xx ! ! xaaax'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
kirjain 'x', kirjain 'a' kaksi
kertaa tai useammin, kirjain 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xx xax ! !'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
kirjain 'x', kirjain 'a' kolme
kertaa, kirjain 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xx xax xaax !'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
kirjain 'a' kymmenen kertaa:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'aaa ! aaa'
Esimerkki
Tässä esimerkissä koodin kirjoittaja halusi tällaisen mallin:
kirjain 'x', kirjain 'a' kolme
kertaa tai vähemmän, kirjain 'x',
mutta valitettavasti tämä - {,3} - ei toimi.
Se on ilmoitettava eksplisiittisesti:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xx ! ! !'
Esimerkki
Nolla on myös sallittu:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! !'
Käytännön tehtävät
Annettu merkkijono:
let str = 'aa aba abba abbba abbbba abbbbba';
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'abba', 'abbba', 'abbbba'
ja vain ne.
Annettu merkkijono:
let str = 'aa aba abba abbba abbbba abbbbba';
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
muotoa 'aba', joissa 'b' esiintyy
vähemmän kuin 3 kertaa (mukaan lukien).
Annettu merkkijono:
let str = 'aa aba abba abbba abbbba abbbbba';
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
muotoa 'aba', joissa 'b' esiintyy
enemmän kuin 4 kertaa (mukaan lukien).