Frage

Wir verwenden die folgenden js / regex zu finden und ersetzen Sie alle nicht-alphanumerischen Zeichen außer - und +

outputString = outputString.replace(/[^\w|^\+|^-]*/g, "");

Allerdings funktioniert es nicht ganz - es nicht das ersetzen ^ und | Zeichen. Ich kann mir nicht helfen, aber frage mich, ob dies etwas mit der ^ und zu tun ist | wird als Meta-Zeichen in der Regex selbst verwendet.

Ich habe Umschaltung auf den Einsatz [\W|^+|^-] versucht, aber das ersetzt die - und +. Ich dachte, dass möglicherweise eine vorwärtsgerichtete Behauptung kann die Antwort sein, aber ich bin nicht ganz sicher, wie sie zu implementieren.

Hat jemand eine Idee, wie dies zu erreichen?

War es hilfreich?

Lösung

Zeichenklassen Wechsel nicht tun, also warum die | ist wörtlich, und die ^ zu Beginn der Klasse sein muss wirksam werden (sonst ist es buchstäblich behandelt wird.)

Verwenden Sie diese:

[^\w+-]+

(Auch wenn - nicht zuletzt ist, muss es als \- innerhalb einer Zeichenklasse entronnen sein - so vorsichtig sein, wenn mehrere Zeichen in die Ausnahmeliste hinzugefügt werden könnten).

Sie können es auch tun mit einem negativen Look-Ahead wie folgt aus:

(?![+-])\W

Hinweis: Sie wollen keine * oder + nach diesen \W, da nur der Look-Ahead auf die unmittelbar folgenden Zeichen gilt (und die g Flagge macht das Ersetzen wiederholen, bis getan)

.

Beachten Sie auch, dass \w und \W _ als Wortzeichen betrachten. Wenn das nicht dann gewünscht zu ersetzen, dass Sie (?![+-])[\W_] verwenden können (oder explizite Bereiche in dem ersten Ausdrücke verwenden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top