Groepen in de reguliere expressie zelf in JavaScript
De inhoud van groepen is niet alleen beschikbaar in de vervangingsreeks, maar ook in de reguliere expressie zelf: we kunnen iets in een groep plaatsen, en dan direct in de reguliere expressie zeggen dat hier de inhoud van die groep moet staan.
De inhoud van groepen is beschikbaar via hun nummers,
waarvoor een backslash staat. Bijvoorbeeld,
de eerste groep is zo beschikbaar: \1,
de tweede groep zo - \2, de derde
- \3, enzovoort.
Ik ben er zeker van dat alles wat hierboven geschreven staat voor jou nogal duidelijk is. Dat is niet verwonderlijk, omdat groepen de minst begrepen plek zijn van reguliere expressies. Laten we het uitzoeken met voorbeelden.
Voorbeeld
Stel we hebben de volgende string:
let str = 'aa bb cd ef';
Laten we er alle plaatsen in vinden waar twee dezelfde letters achter elkaar staan. Om de taak op te lossen, zoeken we naar een willekeurige letter, plaatsen deze in een groep, en controleren dan of het volgende symbool de inhoud van deze groep is:
let res = str.replace(/([a-z])\1/g, '!');
Als resultaat wordt het volgende in de variabele geschreven:
'! ! cd ef'
Voorbeeld
Stel we hebben de volgende string:
let str = 'asxca buzxb csgd';
Laten we er alle woorden in vinden waarvan de eerste en laatste letter hetzelfde zijn. Om de taak op te lossen schrijven we het volgende patroon: letter, dan nog een of meer letters, en dan dezelfde letter als de eerste:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Als resultaat wordt het volgende in de variabele geschreven:
'! ! csgd'
Praktische opdrachten
Gegeven een string:
let str = 'aaa bbb ccc xyz';
Vind alle substrings waarin drie dezelfde letters achter elkaar staan.
Gegeven een string:
let str = 'a aa aaa aaaa aaaaa';
Vind alle substrings waarin twee of meer dezelfde letters achter elkaar staan.
Gegeven een string:
let str = 'aaa aaa bbb bbb ccc ddd';
Vind alle substrings waarin twee dezelfde woorden achter elkaar staan.