Teckengrupper i reguljära uttryck i JavaScript
Det finns speciella kommandon som gör det möjligt att
välja ut hela grupper av tecken på en gång. Kommandot
\d betyder en siffra från 0 till 9.
Kommandot \w betecknar en siffra, en latinsk
bokstav eller understreck. Kommandot \s
betecknar ett mellanslag eller ett blanktecken:
mellanslag, radbrytning, tabbsteg. Det är möjligt att
invertera kommandots betydelse genom att skriva stor
bokstav: till exempel, om \d är en siffra,
så är \D inte en siffra.
Exempel
Låt oss hitta alla siffror:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'! !! !!!'
Exempel
Upprepningsoperatorer betraktar kommandon-grupper
som en helhet, det vill säga grupperande parenteser
behövs inte. I följande exempel ser sökmönstret
ut så här: siffra från 0 till 9
en eller flera gånger:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! ! abc @@@'
Exempel
I följande exempel ser sökmönstret ut
så här: vad som helst en eller flera gånger,
men inte en siffra från 0 till 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'123!3!'
Exempel
I detta exempel ser sökmönstret ut så här: blanktecken en gång:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'1!12!123!abc!@@@'
Exempel
I detta exempel ser sökmönstret ut så här:
INTE blanktecken en eller flera gånger.
Alla delsträngar, separerade med mellanslag, kommer att ersättas
med '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! ! ! !'
Exempel
I detta exempel ser sökmönstret ut så här:
siffra eller bokstav en eller flera gånger.
Alla delsträngar som består av siffror och bokstäver
kommer att ersättas med '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! ! ! @@@'
Exempel
I detta exempel ser sökmönstret ut så här:
INTE siffra och INTE bokstav en eller flera gånger.
I vårt fall faller '@@@' och alla mellanslag under denna definition
(de är ju också varken siffror eller bokstäver). Var uppmärksam på
att det i slutet finns en '!' - i den
omvandlades strängen ' @@@' - med ett
mellanslag framför:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'1!12!123!Abc!'
Praktiska uppgifter
Given en sträng:
let str = 'a1a a2a a3a a4a a5a aba aca';
Skriv ett reguljärt uttryck som hittar strängar,
där vid kanterna står bokstäverna 'a',
och mellan dem finns en siffra.
Given en sträng:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Skriv ett reguljärt uttryck som hittar strängar,
där vid kanterna står bokstäverna 'a',
och mellan dem finns ett valfritt antal siffror.
Given en sträng:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Skriv ett reguljärt uttryck som hittar strängar,
där vid kanterna står bokstäverna 'a',
och mellan dem finns ett valfritt antal siffror (inklusive
noll siffror, det vill säga strängen 'aa').
Given en sträng:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Skriv ett reguljärt uttryck som hittar strängar
av följande typ: vid kanterna står bokstäverna
'a' och 'b', och mellan dem - inte
en siffra och inte ett mellanslag.
Given en sträng:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Skriv ett reguljärt uttryck som hittar strängar
av följande typ: vid kanterna står bokstäverna
'a' och 'b', och mellan dem - inte
en bokstav, inte en siffra och inte ett mellanslag.
Given en sträng:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Skriv ett reguljärt uttryck som ersätter alla mellanslag
med '!'.