Lommer i selve regulære udtryk i JavaScript
Indholdet af lommer er tilgængeligt ikke kun i erstatningsstrengen, men også i selve det regulære udtryk: vi kan lægge noget i en lomme, og derefter direkte i det regulære udtryk sige, at her skal stå indholdet af denne lomme.
Indholdet af lommer er tilgængeligt via deres numre,
foran hvilke der står en omvendt skråstreg. For eksempel,
vil den første lomme være tilgængelig sådan her: \1,
den anden lomme sådan her - \2, den tredje
- \3 og så videre.
Jeg er sikker på, at alt hvad der er skrevet ovenfor indtil videre er ret utydeligt for dig. Det er ikke overraskende, da lommer er det mest uforståelige sted i regulære udtryk. Lad os undersøge det med eksempler.
Eksempel
Lad os sige, at vi har en streng som denne:
let str = 'aa bb cd ef';
Lad os finde alle steder i den, hvor der står to vilkårlige ens bogstaver i træk. For at løse opgaven vil vi søge efter et hvilket som helst bogstav, lægge det i en lomme, og derefter kontrollere, om det næste symbol er indholdet af denne lomme:
let res = str.replace(/([a-z])\1/g, '!');
Resultatet, der skrives i variablen, vil være følgende:
'! ! cd ef'
Eksempel
Lad os sige, at vi har en streng som denne:
let str = 'asxca buzxb csgd';
Lad os finde alle ord i den, hvor det første og sidste bogstav er ens. For at løse opgaven skriver vi følgende mønster: bogstav, derefter endnu et eller flere bogstaver, og derefter det samme bogstav som det første:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Resultatet, der skrives i variablen, vil være følgende:
'! ! csgd'
Praktiske opgaver
Givet en streng:
let str = 'aaa bbb ccc xyz';
Find alle delstrenge, hvor der er tre ens bogstaver i træk.
Givet en streng:
let str = 'a aa aaa aaaa aaaaa';
Find alle delstrenge, hvor der er to eller flere ens bogstaver i træk.
Givet en streng:
let str = 'aaa aaa bbb bbb ccc ddd';
Find alle delstrenge, hvor der er to ens ord i træk.