Flerliniestilstand i JavaScript regex
Regulære uttrykk har sine særegenheter når de jobber med flerlinjede strenger. La oss undersøke dem ved å bruke følgende streng som eksempel, som inneholder vanlige tegn, linjeskift-tegn og tabulatorer:
let str = `111
222
333
444`;
Linjeskift
Linjeskift-tegn kan
fanges med kommandoen '\n':
let res = str.replace(/\n/g, '!');
Resultatet som skrives til variabelen blir følgende (mellomrommene mellom linjene er tabulatorer):
`111! 222! 333! 444`;
Tabulator
Tabulator-tegn kan
fanges med kommandoen '\t':
let res = str.replace(/\t/g, '!');
Resultatet som skrives til variabelen blir følgende:
`
111
!222
!333
!444
`;
Punktums funksjon
Kommandoen '.' fanger ikke
linjeskift-tegn i en flerlinjet streng:
let res = str.replace(/./g, '!');
Resultatet som skrives til variabelen blir følgende:
`
!!!
!!!!
!!!!
!!!!
`;
Ethvert tegn
For å fange alle tegn i en flerlinjet
streng, brukes et lurt triks i form av
kombinasjonen [\s\S]. En slik konstruksjon vil finne
alle vanlige tegn og alle linjeskift:
let res = str.replace(/[\s\S]/g, '!');
Resultatet som skrives til variabelen blir følgende:
`!!!!!!!!!!!!!!!!!!`;
Hatt
Ved hjelp av modifikatoren 'm'
kan flerlinjetilstand skrus på.
I dette tilfellet vil hattsymbolet fange
begynnelsen av hver linje:
let res = str.replace(/^/gm, '!');
Resultatet som skrives til variabelen blir følgende:
`
!111
!222
!333
!444
`;
Dollar
Kommandoen '
i flerlinjetilstand
vil fange slutten av hver linje:
let res = str.replace(/$/gm, '!');
Resultatet som skrives til variabelen blir følgende:
`
111!
222!
333!
444!
`;
Praktiske oppgaver
Gitt en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært uttrykk som lager følgende streng fra denne:
`
abc!
def!
ghi!
jkl!
`;
Gitt en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært uttrykk som lager følgende streng fra denne:
`
! abc
! def
! ghi
! jkl
`;
Gitt en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært uttrykk som lager følgende streng fra denne:
`!
abc
def
ghi
jkl
!`;
Gitt en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært uttrykk som lager følgende streng fra denne:
`!
! abc
! def
! ghi
! jkl
!`;
Gitt en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært uttrykk som lager følgende streng fra denne:
`!
abc!
def!
ghi!
jkl!
!`;
Gitt en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært uttrykk som lager følgende streng fra denne:
`
!abc
!def
!ghi
!jkl
`;