Aloha ;)
PS: Ich wundere mich mal wieder darüber, dass
\d
die arabischen Ziffern ٠١٢٣٤٥٦٧٨ nicht matcht.Was gibt es da zu wundern? \d ist definiert als [0..9].
Man hätte es auch anders definieren können: so, dass
\d
alles matcht, was im Unicode-Standard als Ziffernzeichen („Nd - Number, decimal“) definiert ist.
Hätte man, ja. Und dadurch anderes aufs Spiel gesetzt, zum Beispiel die Einfachheit der vorliegenden Definition, die auch Vorteile bietet. Außerdem ist JavaScript als Programmiersprache nicht an Unicode gebunden; die Verknüpfung mit dem Unicode-Standard ist also eher schwer möglich.
Nach wie vor ist außerdem RegEx vor allem ein Programmierwerkzeug - und Programmierung erfolgt nun mal (das kann man gutfinden oder auch nicht - ich finds gut) vordergründig auf Grundlage der englischen Sprache und dem dieser zugrundeliegenden Basiszeichensatz ASCII. Es macht also durchaus Sinn, dass in den vordefinierten Abkürzungen (nichts anderes ist \d
- eine Abkürzung für ein Subset von ASCII-Zeichen) auch nur ASCII bedient wird, selbst wenn im Grunde genommen Zeichen jedes Zeichensatzes später für RegExe eingesetzt werden kann.
Jede andere Lösung wäre - gerade vor dem Hintergrund unterschiedlicher Zeichenkodierungen - sehr komplex umzusetzen und wird wohl auch nicht sehr oft gebraucht. Der Aufwand würde also ziemlich sicher nicht dem Nutzen gerecht werden.
Grüße,
RIDER