Flerliniæritet i JavaScript regulære udtryk
Regulære udtryk har deres særligheder, når de arbejder med flerlinjede strenge. Lad os undersøge dem ved hjælp af følgende streng, der indeholder almindelige 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, der bliver skrevet til variablen, vil være følgende (mellemrum mellem linjerne er tabulatorer):
`111! 222! 333! 444`;
Tabulator
Tabulator-tegn kan
fanges med kommandoen '\t':
let res = str.replace(/\t/g, '!');
Resultatet, der bliver skrevet til variablen, vil være følgende:
`
111
!222
!333
!444
`;
Punktums funktion
Kommandoen '.' fanger ikke
linjeskift-tegn i en flerlinjet streng:
let res = str.replace(/./g, '!');
Resultatet, der bliver skrevet til variablen, vil være følgende:
`
!!!
!!!!
!!!!
!!!!
`;
Ethvert tegn
For at fange alle tegn i en flerlinjet
streng, bruges et smart trick i form af
kombinationen [\s\S]. Denne konstruktion vil finde
alle almindelige tegn og alle linjeskift:
let res = str.replace(/[\s\S]/g, '!');
Resultatet, der bliver skrevet til variablen, vil være følgende:
`!!!!!!!!!!!!!!!!!!`;
Hat
Ved hjælp af modifiereren 'm'
kan man aktivere multiline-tilstand.
I dette tilfælde vil hat-tegnet finde
begyndelsen af hver linje:
let res = str.replace(/^/gm, '!');
Resultatet, der bliver skrevet til variablen, vil være følgende:
`
!111
!222
!333
!444
`;
Dollar
Kommandoen '
i multiline-tilstand
vil fange enden af hver linje:
let res = str.replace(/$/gm, '!');
Resultatet, der bliver skrevet til variablen, vil være følgende:
`
111!
222!
333!
444!
`;
Praktiske opgaver
Givet en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært udtryk, der laver følgende ud af denne streng:
`
abc!
def!
ghi!
jkl!
`;
Givet en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært udtryk, der laver følgende ud af denne streng:
`
! abc
! def
! ghi
! jkl
`;
Givet en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært udtryk, der laver følgende ud af denne streng:
`!
abc
def
ghi
jkl
!`;
Givet en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært udtryk, der laver følgende ud af denne streng:
`!
! abc
! def
! ghi
! jkl
!`;
Givet en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært udtryk, der laver følgende ud af denne streng:
`!
abc!
def!
ghi!
jkl!
!`;
Givet en streng:
`
abc
def
ghi
jkl
`;
Skriv et regulært udtryk, der laver følgende ud af denne streng:
`
!abc
!def
!ghi
!jkl
`;