Tegngrupper i regulære udtryk i JavaScript
Der findes specielle kommandoer, der gør det muligt at
vælge hele grupper af tegn på én gang. Kommandoen
\d betyder et ciffer fra 0 til 9.
Kommandoen \w betegner et ciffer, et latinsk
bogstav eller understregningstegnet. Kommandoen \s
betegner et mellemrum eller et blanktegn:
mellemrum, linjeskift, tabulator. Det er muligt at
invertere kommandoens betydning ved at skrive et stort
bogstav: for eksempel, hvis \d er et ciffer,
så er \D et ikke-ciffer.
Eksempel
Lad os finde alle cifre:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
Resultatet i variablen vil være følgende:
'! !! !!!'
Eksempel
Gentagelsesoperatorer betragter kommando-grupper
som en helhed, det vil sige, at grupperingsparenteser
ikke er nødvendige. I det følgende eksempel ser søgemønsteret
sådan ud: ciffer fra 0 til 9
et eller flere gange:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
Resultatet i variablen vil være følgende:
'! ! ! abc @@@'
Eksempel
I det følgende eksempel ser søgemønsteret
sådan ud: hvad som helst et eller flere gange,
men ikke et ciffer fra 0 til 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
Resultatet i variablen vil være følgende:
'123!3!'
Eksempel
I dette eksempel ser søgemønsteret sådan ud: blanktegn én gang:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
Resultatet i variablen vil være følgende:
'1!12!123!abc!@@@'
Eksempel
I dette eksempel ser søgemønsteret sådan ud:
IKKE blanktegn et eller flere gange.
Alle understrenge, adskilt af mellemrum, vil blive erstattet
med '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
Resultatet i variablen vil være følgende:
'! ! ! ! !'
Eksempel
I dette eksempel ser søgemønsteret sådan ud:
ciffer eller bogstav et eller flere gange.
Alle understrenge, der består af cifre og bogstaver,
vil blive erstattet med '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
Resultatet i variablen vil være følgende:
'! ! ! ! @@@'
Eksempel
I dette eksempel ser søgemønsteret sådan ud:
IKKE ciffer og IKKE bogstav et eller flere gange.
I vores tilfælde falder '@@@' og alle mellemrum (de er jo heller ikke
cifre eller bogstaver) under denne definition. Læg mærke til
at der til sidst er én '!' - den blev til fra
strengen ' @@@' - med et mellemrum foran:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
Resultatet i variablen vil være følgende:
'1!12!123!Abc!'
Praktiske opgaver
Givet en streng:
let str = 'a1a a2a a3a a4a a5a aba aca';
Skriv et regulært udtryk, der finder strenge,
hvor der står bogstaver 'a' i kanterne,
og imellem dem er der ét ciffer.
Givet en streng:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Skriv et regulært udtryk, der finder strenge,
hvor der står bogstaver 'a' i kanterne,
og imellem dem er der et hvilket som helst antal cifre.
Givet en streng:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Skriv et regulært udtryk, der finder strenge,
hvor der står bogstaver 'a' i kanterne,
og imellem dem er der et hvilket som helst antal cifre (herunder
også nul cifre, det vil sige strengen 'aa').
Givet en streng:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Skriv et regulært udtryk, der finder strenge
af følgende type: i kanterne står bogstaver
'a' og 'b', og imellem dem - ikke
et tal og ikke et mellemrum.
Givet en streng:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Skriv et regulært udtryk, der finder strenge
af følgende type: i kanterne står bogstaver
'a' og 'b', og imellem dem - ikke
et bogstav, ikke et ciffer og ikke et mellemrum.
Givet en streng:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Skriv et regulært udtryk, der erstatter alle mellemrum
med '!'.