JavaScript String.Replace () Eksempel med RegEx
Regular Expressions (også kaldet RegEx eller RegExp) er en effektiv måde at analysere tekst på. Med RegEx kan du matche strenge på punkter, der matcher bestemte tegn (for eksempel JavaScript) eller mønstre (for eksempel NumberStringSymbol - 3a &).
Den .replace
metode bruges på strenge i JavaScript til at erstatte dele af streng med tegn. Det bruges ofte som sådan:
const str = 'JavaScript'; const newStr = str.replace("ava", "-"); console.log(newStr); // J-Script
Som du kan se ovenfor accepterer erstatningsmetoden to argumenter: den streng, der skal udskiftes, og hvad strengen ville blive erstattet med.
Her er hvor Regex kommer ind.
Brugen af .replace
ovenstående er begrænset: de tegn, der skal udskiftes, er kendt - "ava". Hvad hvis vi i stedet beskæftiger os med et mønster? Måske et tal, to bogstaver og ordet "foo" eller tre symboler brugt sammen?
Den .replace
anvendte metode med RegEx
kan opnå dette. RegEx
kan effektivt bruges til at genskabe mønstre. Så ved at kombinere dette med .replace
betyder, at vi kan erstatte mønstre og ikke kun nøjagtige tegn.
Sådan bruges RegEx
med .replace
i JavaScript
For at bruge RegEx replace
erstattes f.eks /regex/
. Det første argument af med regex-syntaks . Denne syntaks fungerer som et mønster, hvor dele af strengen, der matcher den, vil blive erstattet med den nye understreng.
Her er et eksempel:
// matches a number, some characters and another number const reg = /\d.*\d/ const str = "Java3foobar4Script" const newStr = str.replace(reg, "-"); console.log(newStr); // "Java-Script"
Strengen 3foobar4
matcher regex /\d.*\d/
, så den erstattes.
Hvad hvis vi ville udføre udskiftninger flere steder?
Regex
tilbyder allerede det med g
(globalt) flag, og det samme kan bruges med replace
. Sådan gør du:
const reg = /\d{3}/g const str = "Java323Scr995ip4894545t"; const newStr = str.replace(reg, ""); console.log(newStr); // JavaScrip5t // 5 didn't pass the test :(
Regex matcher dele af strengen, der er nøjagtigt 3 på hinanden følgende tal. 323
matcher det, 995
matcher det, 489
matcher det og 454
matcher det. Men det sidste 5
matcher ikke mønsteret.
Resultatet er, der JavaScrip5t
viser, hvordan mønstrene matches korrekt og erstattes med den nye understreng (en tom streng).
Sagens flag - i
kan også bruges. Dette betyder, at du kan erstatte store og små bogstaver. Sådan bruges det:
const reg1 = /\dA/ const reg2 = /\dA/i const str = "Jav5ascript" const newStr1 = str.replace(reg1, "--"); const newStr2 = str.replace(reg2, "--"); console.log(newStr1) // Jav5ascript console.log(newStr2) // Jav--script
..5a..
matcher ikke den første syntaks, fordi RegEx er som standard store og små bogstaver. Men med brugen af i
flag, som det ses i den anden syntaks, er strengen som forventet - erstattet.
Sådan bruges Split med regulære udtryk
split
bruger også RegEx
. Hvilket betyder, at du kan opdele en streng ikke kun på understrenge, der matcher nøjagtige tegn, men også mønstre.
Her er et hurtigt kig:
const regex = /\d{2}a/; const str = "Hello54 How 64aare you"; console.log(str.split(regex)) // ["Hello54 How ", "are you"]
Strengen var split
på, 64a
fordi denne understreng matcher den angivne regex.
Bemærk, at det globale flag - g
- in split
er irrelevant, i modsætning til i
flag og andre flag. Dette skyldes, split
at strengen deles på de flere punkter, regex matcher.
Afslutter
RegEx
gør replace
ing strenge i JavaScript mere effektive, kraftfulde og sjove.
Du er ikke kun begrænset til nøjagtige tegn, men mønstre og flere udskiftninger på én gang. I denne artikel har vi set, hvordan de arbejder sammen ved hjælp af et par eksempler.
Skål til RegEx?