Monirivien toiminta JavaScriptin säännöllisissä lausekkeissa
Säännöllisillä lausekkeilla on omat erityispiirteensä monirivisten merkkijonojen käsittelyssä. Selvitetään niitä seuraavan merkkijonon esimerkissä, joka sisältää tavallisia merkkejä, rivinvaihtomerkkejä ja sarkainmerkkejä:
let str = `111
222
333
444`;
Rivinvaihto
Rivinvaihtomerkit voidaan
pyydystää käyttämällä komentoa '\n':
let res = str.replace(/\n/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava (rivien väliset välit ovat sarkainmerkkejä):
`111! 222! 333! 444`;
Sarkain
Sarkainmerkkejä voidaan
pyydystää käyttämällä komentoa '\t':
let res = str.replace(/\t/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
`
111
!222
!333
!444
`;
Pisteen toiminta
Komento '.' moniriviselle
merkkijonolle ei pyydystä rivinvaihtomerkkejä:
let res = str.replace(/./g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
`
!!!
!!!!
!!!!
!!!!
`;
Mikä tahansa merkki
Kaikkien merkkien pyydystämiseksi monirivisessä
merkkijonossa käytetään ovelaa temppua
[\s\S] -yhdistelmän muodossa. Tällainen rakenne löytää
kaikki tavalliset merkit ja kaikki rivinvaihdot:
let res = str.replace(/[\s\S]/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
`!!!!!!!!!!!!!!!!!!`;
Hattu
Modifierilla 'm'
voidaan ottaa monirivitila käyttöön.
Tässä tilassa hattu löytää
jokaisen rivin alun:
let res = str.replace(/^/gm, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
`
!111
!222
!333
!444
`;
Dollarimerkki
Komento '
monirivitilassa
löytää jokaisen rivin lopun:
let res = str.replace(/$/gm, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
`
111!
222!
333!
444!
`;
Käytännön tehtävät
Annettu merkkijono:
`
abc
def
ghi
jkl
`;
Kirjoita säännöllinen lauseke, joka muuttaa tämän merkkijonon seuraavaksi:
`
abc!
def!
ghi!
jkl!
`;
Annettu merkkijono:
`
abc
def
ghi
jkl
`;
Kirjoita säännöllinen lauseke, joka muuttaa tämän merkkijonon seuraavaksi:
`
! abc
! def
! ghi
! jkl
`;
Annettu merkkijono:
`
abc
def
ghi
jkl
`;
Kirjoita säännöllinen lauseke, joka muuttaa tämän merkkijonon seuraavaksi:
`!
abc
def
ghi
jkl
!`;
Annettu merkkijono:
`
abc
def
ghi
jkl
`;
Kirjoita säännöllinen lauseke, joka muuttaa tämän merkkijonon seuraavaksi:
`!
! abc
! def
! ghi
! jkl
!`;
Annettu merkkijono:
`
abc
def
ghi
jkl
`;
Kirjoita säännöllinen lauseke, joka muuttaa tämän merkkijonon seuraavaksi:
`!
abc!
def!
ghi!
jkl!
!`;
Annettu merkkijono:
`
abc
def
ghi
jkl
`;
Kirjoita säännöllinen lauseke, joka muuttaa tämän merkkijonon seuraavaksi:
`
!abc
!def
!ghi
!jkl
`;