JavaScript regex zum ersetzen von numerischen HTML-entities mit Ihrem tatsächlichen Zeichen
Ich versuche, JavaScript zu verwenden & regex zum ersetzen von numerischen HTML-entities mit Ihren eigentlichen Unicode-Zeichen, z.B.
foo's bar
→
foo's bar
Dies ist, was ich so weit gekommen:
"foo's bar".replace(/&#([^\s]*);/g, "$1"); //"foo39s bar"
Alles, was noch zu tun ist, ersetzen Sie die Zahl mit String.fromCharCode($1)
, aber ich kann nicht scheinen, um es zu arbeiten. Wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
"foos bar"
. Bin ich etwas fehlt? Edit: Oh, anscheinend ist das damatch
="'"
und nicht nur die39
.Erste argument (x) ist ein "'" im aktuellen Beispiel. y ist 39.
Als auch die Verwendung einer callback-Funktion, möchten Sie vielleicht zu prüfen, hinzufügen von Unterstützung für hex-Zeichen Referenzen (
ሴ
).Auch
fromCharCode
kann nicht genug sein. zB𐤀
ist ein Gültiger Verweis auf eine phönizische Charakter, sondern auch, weil es außerhalb der Basic Multilingual Plane, und JavaScript-String-Modell basiert auf UTF-16 code-Einheiten, nicht die kompletten Charakter-code PunktefromCharCode(67840)
wird nicht funktionieren. Brauchen Sie einen UTF-16-encoder, zum Beispiel:Wenn Sie nicht möchten, definieren Sie die Objekte, die Sie können damit der browser es für Sie tun - dieses bit wird ein leeres p-element ist, schreibt die html und gibt den text zurück, die Sie produziert.
Das p-element wird nie in das Dokument aufgenommen.
innerHTML
, das ist nur ein Vektor. Es gibt viele andere (CSS -expression
,onerror
Handler, object-und embed-Elementen, eingebettet XML und externe Entitäten), um nur ein paar zu nennen, die in der Lage sein könnte zu code-Ausführung verursachen oder zulassen von beliebigen Netzwerk-Anforderungen.