Direct naar de hoofdinhoud
Module 7 · Les 3 van 427/32 in de cursus~12 min
Modulelessen (3/4)

Vervangen door een terugbelverzoek

Als een vervangende string niet genoeg is, geef dan een functie door: BESCHERMD_INLINE_0. Er wordt een terugbelverzoek ingediend voor elke wedstrijd en de geretourneerde waarde wordt de vervanging.

JS
'prezzi: 10 20 30'.replace(/\d+/g, (m) => Number(m) * 1.22);
// "prezzi: 12.2 24.4 36.6" (22% VAT)

Terugbelargumenten

JS
str.replace(regex, (match, p1, p2, ..., offset, original, groups) => ...);
  • match -- de hele wedstrijd.
  • p1, p2, \u2026 -- de vastgelegde groepen op volgorde.
  • offset -- index van de overeenkomst in de originele string.
  • original -- de hele reeks.
  • groups -- object met de benoemde groepen (indien aanwezig).
JS
'2024-03-15'.replace(/(\d{4})-(\d{2})-(\d{2})/, (_, a, m, g) => `${g}/${m}/${a}`);
// "15/03/2024"

De callback geeft u willekeurige macht: parseren, opzoeken, conversie, HTML ontsnappen aan alles wat een statische string niet kan doen.

Geavanceerde argumenten bij vervangende callbacks

De callback-functie ontvangt verschillende argumenten: de volledige match, elke vastgelegde groep, de offset van de match binnen de hele tekst en de originele invoerreeks. Dit maakt geavanceerde contextgebaseerde transformatielogica mogelijk.

Probeer het

Oefening#regex.m7.l3.e1
Pogingen: 0Laden…

Zoek elk geheel getal in de tekst. (Ter vervanging zou je `(m) => Getal(m) * 2` doorgeven om het te verdubbelen.)

Editor laden…
Toon hint

Gebruik \\d+ (een of meer cijfers) om elk geheel getal als één overeenkomst vast te leggen.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#regex.m7.l3.e2
Pogingen: 0Laden…

Vind elke e-mail (vereenvoudigde vorm: letters/cijfers/punten/onderstrepingstekens @ domein). Op deze manier kan een terugbelactie het bericht redigeren naar `***@domein`.

Editor laden…
Toon hint

Verbreed de klasse naar [\\w.]+ om punten in de gebruikersnaam en het domein te accepteren.

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#regex.m7.l3.e3
Pogingen: 0Laden…

Match every word consisting of letters in the text, so it can be transformed to uppercase via a callback.

Editor laden…
Toon hint

Vind eenvoudige letters met [a-zA-Z]+.

Oplossing beschikbaar na 3 pogingen