Direct naar de hoofdinhoud
Module 5 · Les 4 van 420/32 in de cursus~12 min
Modulelessen (4/4)

Unicode-eigenschap ontsnapt

De klassen \w, \d, \s in ASCII zijn niet voldoende voor Italiaans, Frans, Grieks of emoji-tekst. Moderne JavaScript (met de vlag u -- Unicode) biedt property escapes \p{...}: semantische klassen gebaseerd op Unicode eigenschappen van karakters.

Code
Pattern: \p{L}+        (with flag u)
Sample:  Ciao caffe' \u00fcber \u4e16\u754c
         ^^^^ ^^^^^^^ ^^^^ ^^^^

\p{L} = "elke letter (Unicode)": bevat letters met accenten, Chinees ideogrammen, Cyrillisch, Grieks\u2026 alles. De meest voorkomende:

  • \p{L} -- letter (van elk alfabet).
  • \p{N} -- nummer (Arabische cijfers, Romeins, Indiaas\u2026).
  • \p{P} -- leestekens.
  • \p{S} -- symbool (wiskundig, valuta, emoji\u2026).
  • \p{Z} -- spatie/scheidingsteken.
  • \p{Script=Latin} -- specifiek het Latijnse alfabet.
  • \p{Script=Greek} -- het Griekse alfabet. En zo verder.

En de geweigerde versies \P{L}, \P{N}, \u2026

Verschil met \w en \d

Code
\\w matches [A-Za-z0-9_]              -- ASCII only, no "caffe'"
\\p{L}\\p{N}_  with flag u            -- includes accented characters

Voor een robuuste parser van Italiaanse tekst, verkies \p{L} boven \w: citta', perche', andro' komen correct overeen als woorden.

Unicode-eigenschappen en browsercompatibiliteit

Unicode-eigenschappen zoals \\p{L} (Letters) of \\p{Script=Latin} breiden klassen uit naar internationale alfabetten. In JavaScript vereisen ze strikt de vlag u (of v), anders genereert de engine een syntaxisfout.

Probeer het

Oefening#regex.m5.l4.e1
Pogingen: 0Laden…

Vind elk woord, inclusief woorden met accenten (citta', perche', e' \u2026). Gebruik de eigenschap escape \\p{L} met vlag u.

Editor laden…
Toon hint

Vervang \\w+ door \\p{L}+ en voeg de vlag u toe (naast g).

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#regex.m5.l4.e2
Pogingen: 0Laden…

Zoek elk Unicode-symbool (valuta, wiskunde, emoji) in de tekst, met uitzondering van letters en cijfers.

Editor laden…
Toon hint

\\p{S} komt overeen met de symboolcategorie van Unicode. Denk aan de u-vlag.

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#regex.m5.l4.e3
Pogingen: 0Laden…

Vind alle woorden die uit Cyrillische letters bestaan ​​met behulp van `\p{Script=Cyrillisch}`.

Editor laden…
Toon hint

Gebruik \\p{Script=Cyrillisch} met de + kwantor en de u-vlag.

Oplossing beschikbaar na 3 pogingen