Merkkijoukot JavaScriptin säännöllisissä lausekkeissa
Merkkiryhmät \d ja \w eivät ole
kovin joustavia. Jopa niin yksinkertainen tehtävä
kuin löytää kaikki kirjaimet, mutta ei numeroita -
ei voida ratkaista niillä. Tällaisia tehtäviä
varten tulee käyttää hakasulkuja, jotka edustavat
'tai'-operaatiota.
Hakasulut korvaavat yhden merkin,
minkä tahansa niistä, jotka on lueteltu sisällä. Esimerkiksi,
näin: /x[abc]x/ - sanomme, että
reunoilla täytyy olla kirjain x, ja sisällä
- yksi merkki: joko 'a', tai 'b',
tai 'c'.
Hakasulkujen jälkeen voi kirjoittaa toistoominaisuuksia.
Esimerkiksi näin: /x[abc]+x/
- sanomme, että x:ien sisällä voi olla
mikä tahansa määrä merkkejä 'a', 'b'
ja 'c' - missä tahansa yhdistelmissä.
Voi paitsi luetella merkkejä, myös luoda
merkkiryhmiä kirjoittamalla kahden merkin väliin
viiva. Esimerkiksi näin: [a-d] -
saamme kaikki merkit 'a':sta
'd':hen.
Katsotaan esimerkein.
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä mikä tahansa kirjain 'a':sta
'z':han:
let str = 'xax xbx xcx x@x';
let res = str.replace(/x[a-z]x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! x@x'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä mikä tahansa kirjain 'a':sta
'k':hon:
let str = 'xax xbx xmx x@x';
let res = str.replace(/x[a-k]x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! xmx x@x'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä mikä tahansa kirjain 'A':sta
'Z':han:
let str = 'xax xBx xcx x@x';
let res = str.replace(/x[A-Z]x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xax ! xcx x@x'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä mikä tahansa numero 0:sta 9:ään:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[0-9]x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xax ! ! ! x@x'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä mikä tahansa numero 3:sta 7:ään:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[3-7]x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xax x1x ! ! x@x'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä mikä tahansa kirjain 'a':sta
'z':han tai numero 1:stä 9:ään:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[a-z1-9]x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! ! x@x'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä mikä tahansa kirjain 'a':sta
'z':han tai kirjain 'A':sta
'Z':han:
let str = 'xax xBx xcx x5x x@x';
let res = str.replace(/x[a-zA-Z]x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! x5x x@x'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä mikä tahansa kirjain 'a':sta
'z':han tai numerot 1, 2:
let str = 'xax xbx x1x x2x x3x';
let res = str.replace(/x[a-z12]x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! ! x3x'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
x:ien välissä kirjaimet 'a':sta 'z':han
määrässä 1 tai enemmän:
let str = 'xx xabesx xaadx x123x xa3x';
let res = str.replace(/x[a-z]+x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'xx ! ! ! x123x xa3x'
Esimerkki
Tehdään niin, että kirjainten määrä voi olla myös nolla:
let str = 'xx xabesx xaadx x123x xa3x';
let res = str.replace(/x[a-z]*x/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! ! x123x xa3x'
Käytännön tehtävät
Annettu merkkijono:
let str = 'aba aea aca aza axa';
Kirjoita säännöllinen lauseke, joka löytää seuraavan
kaavan mukaan: reunoilla on kirjaimet 'a',
ja niiden välissä - kirjain 'b', 'e'
tai 'x'.
Annettu merkkijono:
let str = 'a1a a3a a7a a9a aba';
Kirjoita säännöllinen lauseke, joka löytää seuraavan
kaavan mukaan: reunoilla on kirjaimet 'a',
ja niiden välissä - numero 3:sta 6:teen.
Annettu merkkijono:
let str = 'aba aea afa aha aga';
Kirjoita säännöllinen lauseke, joka löytää seuraavan
kaavan mukaan: reunoilla on kirjaimet 'a',
ja niiden välissä - kirjain a:sta g:hen.
Annettu merkkijono:
let str = 'aba aea afa aha aga';
Kirjoita säännöllinen lauseke, joka löytää seuraavan
kaavan mukaan: reunoilla on kirjaimet 'a',
ja niiden välissä - kirjain a:sta f:ään ja j:stä z:han.
Annettu merkkijono:
let str = 'aAa aea aEa aJa a3a';
Kirjoita säännöllinen lauseke, joka löytää seuraavan
kaavan mukaan: reunoilla on kirjaimet 'a',
ja niiden välissä - kirjain a:sta f:ään ja A:sta D:hen.
Annettu merkkijono:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Kirjoita säännöllinen lauseke, joka löytää seuraavan
kaavan mukaan: reunoilla on kirjaimet 'a',
ja niiden välissä - pienet latinalaiset kirjaimet,
koskematta muihin.
Annettu merkkijono:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Kirjoita säännöllinen lauseke, joka löytää seuraavan
kaavan mukaan: reunoilla on kirjaimet 'a',
ja niiden välissä - pienet ja suuret latinalaiset
kirjaimet, koskematta muihin.
Annettu merkkijono:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Kirjoita säännöllinen lauseke, joka löytää seuraavan
kaavan mukaan: reunoilla on kirjaimet 'a',
ja niiden välissä - pienet latinalaiset kirjaimet
ja numerot, koskematta muihin.