Lommer i selve regulære uttrykk i JavaScript
Innholdet i lommene er tilgjengelig ikke bare i erstatningsstrengen, men også i selve det regulære uttrykket: vi kan legge noe i en lomme, og deretter direkte i det regulære uttrykket si at innholdet av denne lommen skal stå her.
Innholdet i lommene er tilgjengelig via deres numre,
som har et omvendt skråstrek foran. For eksempel,
vil den første lommen være tilgjengelig slik: \1,
den andre lommen slik - \2, den tredje
- \3 og så videre.
Jeg er sikker på at alt skrevet ovenfor så langt er ganske uklart for deg. Dette er ikke overraskende, siden lommer er det mest vanskeligforståelige stedet i regulære uttrykk. La oss gå gjennom det med eksempler.
Eksempel
La oss si at vi har en streng som denne:
let str = 'aa bb cd ef';
La oss finne alle stedene i den hvor to like bokstaver står etter hverandre. For å løse oppgaven vil vi søke etter en hvilken som helst bokstav, legge den i en lomme, og deretter sjekke om neste symbol er innholdet av denne lommen:
let res = str.replace(/([a-z])\1/g, '!');
Resultatet som skrives inn i variabelen blir følgende:
'! ! cd ef'
Eksempel
La oss si at vi har en streng som denne:
let str = 'asxca buzxb csgd';
La oss finne alle ordene i den hvor den første og siste bokstaven er like. For å løse oppgaven skriver vi følgende mønster: bokstav, deretter en eller flere bokstaver til, og deretter samme bokstav som den første:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Resultatet som skrives inn i variabelen blir følgende:
'! ! csgd'
Praktiske oppgaver
Gitt en streng:
let str = 'aaa bbb ccc xyz';
Finn alle delstrenger som har tre like bokstaver etter hverandre.
Gitt en streng:
let str = 'a aa aaa aaaa aaaaa';
Finn alle delstrenger som har to eller flere like bokstaver etter hverandre.
Gitt en streng:
let str = 'aaa aaa bbb bbb ccc ddd';
Finn alle delstrenger som har to like ord etter hverandre.