Merkkiryhmät JavaScriptin säännöllisissä lausekkeissa
On olemassa erikoiskomentoja, joiden avulla voidaan
valita hetesti kokonaisia merkkiryhmiä. Komento
\d tarkoittaa numeroa 0:sta 9:ään.
Komento \w tarkoittaa numeroa, latinalaista
kirjainta tai alaviivaa. Komento \s
tarkoittaa välilyöntiä tai välilyöntimerkkiä:
välilyönti, rivinvaihto, sarkain. Voit
kääntää komennon merkityksen kirjoittamalla ison
kirjaimen: esimerkiksi, jos \d on numero,
niin \D on ei-numero.
Esimerkki
Etsitään kaikki numerot:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! !! !!!'
Esimerkki
Toistotoimittajat pitävät ryhmäkomennot
yhtenä kokonaisuutena, eli ryhmitteleviä sulkeita
ei tarvita. Seuraavassa esimerkissä hakumalli
näyttää tältä: numero 0:sta 9:ään
yksi tai useampi kerta:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! abc @@@'
Esimerkki
Seuraavassa esimerkissä hakumalli näyttää
tältä: mitä tahansa yksi tai useampi kerta,
mutta ei numero 0:sta 9:ään:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'123!3!'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä: välilyöntimerkki yksi kerta:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'1!12!123!abc!@@@'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
EI välilyöntimerkki yksi tai useampi kerta.
Kaikki välilyönneillä erotetut osajonot korvataan
merkillä '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! ! !'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
numero tai kirjain yksi tai useampi kerta.
Kaikki numeroista ja kirjaimista koostuvat osajonot
korvataan merkillä '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! ! ! @@@'
Esimerkki
Tässä esimerkissä hakumalli näyttää tältä:
EI numero eikä kirjain yksi tai useampi kerta.
Tämän määritelmän mukaisesti tapauksessamme osuu
merkkijonoon '@@@' ja kaikki välilyönnit (ne eivät
myöskään ole numeroita eivätkä kirjaimia). Huomaa
se, että lopussa on yksi '!' - siihen
muuttui merkkijono ' @@@' - jossa on
välilyönti edessä:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'1!12!123!Abc!'
Käytännön tehtävät
Annettu merkkijono:
let str = 'a1a a2a a3a a4a a5a aba aca';
Kirjoita säännöllinen lauseke, joka löytää merkkijonot,
joissa reunoissa on kirjaimet 'a',
ja niiden välissä on yksi numero.
Annettu merkkijono:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Kirjoita säännöllinen lauseke, joka löytää merkkijonot,
joissa reunoissa on kirjaimet 'a',
ja niiden välissä on mikä tahansa määrä numeroita.
Annettu merkkijono:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Kirjoita säännöllinen lauseke, joka löytää merkkijonot,
joissa reunoissa on kirjaimet 'a',
ja niiden välissä on mikä tahansa määrä numeroita (mukaan
lukien nolla numeroa, eli merkkijono 'aa').
Annettu merkkijono:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Kirjoita säännöllinen lauseke, joka löytää seuraavanlaiset
merkkijonot: reunoissa on kirjaimet
'a' ja 'b', ja niiden välissä - ei
numero eikä välilyönti.
Annettu merkkijono:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Kirjoita säännöllinen lauseke, joka löytää seuraavanlaiset
merkkijonot: reunoissa on kirjaimet
'a' ja 'b', ja niiden välissä - ei
kirjain, ei numero eikä välilyönti.
Annettu merkkijono:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Kirjoita säännöllinen lauseke, joka korvaa kaikki välilyönnit
merkillä '!'.