Tegngrupper i regulære uttrykk i JavaScript
Det finnes spesielle kommandoer som lar deg
velge hele grupper av tegn på en gang. Kommandoen
\d betyr et siffer fra 0 til 9.
Kommandoen \w betegner et siffer, en latinsk
bokstav eller understrekingstegnet. Kommandoen \s
betegner et mellomrom eller et blanktegn:
mellomrom, linjeskift, tabulator. Du kan
invertere betydningen av kommandoen ved å skrive stor
bokstav: for eksempel, hvis \d er et siffer,
så er \D et ikke-siffer.
Eksempel
La oss finne alle sifre:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
Resultatet i variabelen vil bli følgende:
'! !! !!!'
Eksempel
Repetisjonsoperatorer betrakter kommando-grupper
som en helhet, det vil si at grupperende parenteser
ikke er nødvendig. I det følgende eksemplet ser søkemønsteret
slik ut: siffer fra 0 til 9
en eller flere ganger:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
Resultatet i variabelen vil bli følgende:
'! ! ! abc @@@'
Eksempel
I det følgende eksemplet ser søkemønsteret
slik ut: hva som helst en eller flere ganger,
men ikke et siffer fra 0 til 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
Resultatet i variabelen vil bli følgende:
'123!3!'
Eksempel
I dette eksemplet ser søkemønsteret slik ut: blanktegn én gang:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
Resultatet i variabelen vil bli følgende:
'1!12!123!abc!@@@'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
IKKE blanktegn en eller flere ganger.
Alle delstrenger, separert med mellomrom, vil bli erstattet
med '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
Resultatet i variabelen vil bli følgende:
'! ! ! ! !'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
siffer eller bokstav en eller flere ganger.
Alle delstrenger som består av sifre og bokstaver
vil bli erstattet med '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
Resultatet i variabelen vil bli følgende:
'! ! ! ! @@@'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
IKKE siffer og IKKE bokstav en eller flere ganger.
I vårt tilfelle passer '@@@' og alle mellomrom (de er jo heller
ikke sifre eller bokstaver) inn under denne definisjonen. Legg merke til
at det på slutten er én '!' - den ble til fra
strengen ' @@@' - med
et mellomrom foran:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
Resultatet i variabelen vil bli følgende:
'1!12!123!Abc!'
Praktiske oppgaver
Gitt en streng:
let str = 'a1a a2a a3a a4a a5a aba aca';
Skriv et regulært uttrykk som finner strenger,
hvor det på kantene står bokstavene 'a',
og mellom dem er ett siffer.
Gitt en streng:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Skriv et regulært uttrykk som finner strenger,
hvor det på kantene står bokstavene 'a',
og mellom dem er et hvilket som helst antall sifre.
Gitt en streng:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Skriv et regulært uttrykk som finner strenger,
hvor det på kantene står bokstavene 'a',
og mellom dem er et hvilket som helst antall sifre (inkludert
null sifre, det vil si strengen 'aa').
Gitt en streng:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Skriv et regulært uttrykk som finner strenger
av følgende type: på kantene står bokstavene
'a' og 'b', og mellom dem - ikke
et tall og ikke et mellomrom.
Gitt en streng:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Skriv et regulært uttrykk som finner strenger
av følgende type: på kantene står bokstavene
'a' og 'b', og mellom dem - ikke
bokstav, ikke siffer og ikke mellomrom.
Gitt en streng:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Skriv et regulært uttrykk som erstatter alle mellomrom
med '!'.