Ich versuche, URLs in irgendeinem Text zu finden, indem ich JavaScript-Code verwende. Das Problem ist, dass der reguläre Ausdruck, den ich benutze, \ w benutzt, um Buchstaben und Ziffern innerhalb der URL zu finden, aber es stimmt nicht mit nicht-englischen Zeichen überein (in meinem Fall - hebräische Buchstaben).
Also, was kann ich anstelle von \ w verwenden, um alle Buchstaben in allen Sprachen zu finden?
Weil \w
nur mit den ASCII-Zeichen 48-57 ('0' - '9'), 67-90 ('A' - 'Z') und 97-122 ('a' - 'z') übereinstimmt. Hebräische Zeichen und andere spezielle Fremdsprachenzeichen (z. B. Umlaut-o oder Tilde-n) liegen außerhalb dieses Bereichs.
Anstatt Fremdsprachenzeichen zu finden (es gibt so viele davon in vielen verschiedenen ASCII-Bereichen), sollten Sie besser nach den Zeichen suchen, die Ihre Wörter abgrenzen - Leerzeichen, Anführungszeichen und andere Interpunktionszeichen.
Der ECMA 262 v3-Standard, der die allgemein als JavaScript bekannte Programmiersprache definiert, schreibt vor, dass \w
äquivalent zu [a-zA-Z0-9_] sein sollte und dass \d
äquivalent zu [0-9 sein sollte ]. \s
hingegen entspricht dem Standard ASCII und Unicode.
JavaScript unterstützt die \p
-Syntax für übereinstimmende Unicode-Objekte auch nicht, daher gibt es keine gute Möglichkeit, dies zu tun. Sie können alle hebräischen Zeichen mit:
Dies entspricht einfach jedem Codepunkt im hebräischen Block.
Sie können jedes ASCII-Wortzeichen oder jedes beliebige hebräische Zeichen mit:
abgleichen %Vor%Ich habe gerade XRegExp gefunden, das noch nicht erwähnt wurde, und ich bin ziemlich beeindruckt davon. Es ist eine alternative Implementierung für reguläre Ausdrücke, verfügt über ein Unicode-Plug-in und ist unter der MIT-Lizenz lizenziert.
Laut der Website, um Unicode-Zeichen zu entsprechen, würden Sie solchen Code verwenden:
%Vor%Schauen Sie sich Ссылка an.
Es sieht so aus, als gäbe es kein \ w-Äquivalent für Unicode, aber Sie können einzelne Unicode-Buchstaben zuordnen, so dass Sie sie erstellen können.
Überprüfen Sie diese Frage zu JavaScript und Unicode . Sieht aus wie Jan Goyvaerts Antwort dort gibt Hoffnung für dich.
Edit: Aber dann scheint es, dass alle Browser \ p ... sowieso nicht unterstützen. Diese Frage sollte nützliche Informationen enthalten.
Beachten Sie, dass URIs (als Obermenge von URLs) von W3C so angegeben werden, dass nur US-ASCII-Zeichen zulässig sind. Normalerweise sollten alle anderen Zeichen durch Prozent-Notation dargestellt werden:
In lokalen oder regionalen Zusammenhängen und mit Verbesserung der Technologie, könnten Benutzer profitieren von der Möglichkeit, ein breiteres zu verwenden Zeichenbereich; solche Verwendung ist nicht definiert durch diese Spezifikation. Prozentcodierte Oktette (Abschnitt 2.1) kann innerhalb eines URI zur Darstellung verwendet werden Zeichen außerhalb des Bereichs der US-ASCII-codierter Zeichensatz wenn dies der Fall ist Vertretung ist erlaubt durch die Schema oder durch das Protokollelement in auf die der URI verweist. So ein Definition sollte die angeben Zeichencodierung, um diese zu kartieren Zeichen zu Oktetts vor dem Sein Prozent-codiert für den URI. // URI: Generische Syntax
Was normalerweise passiert, wenn Sie eine URL mit Nicht-ASCII-Zeichen im Browser öffnen, werden sie in% AB-Notation übersetzt, was wiederum ist US-ASCII.
Wenn es möglich ist, die Art und Weise, wie das Material erstellt wird, zu beeinflussen, wäre die beste Option, URLs während ihrer Erstellung der urlencode () -Funktion zuzuweisen.
Wenn Sie URLs mit nicht-englischen Buchstaben generieren, sollten Sie dies noch einmal überdenken.
Wenn ich das W3C korrekt interpretiere, dürfen URLs nur Wortzeichen innerhalb des lateinischen Alphabets enthalten .
Tags und Links javascript regex hebrew