JSLint meldet unsicheres '^' für die folgende Zeile. Warum das? Oder wird es sich immer beschweren, wenn ich eine Charakterklasse negieren möchte?
// remove all non alphanumeric, comma and dash characters
"!$7s-Gd,&j5d-a#".replace(/[^\w,\-]/g, '');
Dies geschieht nur, wenn Sie die Option unten ausgewählt haben:
Disallow insecure . and [^...] in /RegExp/
Von den Dokumenten :
wahr wenn. und [^ ...] sollte in RegExp-Literalen nicht zulässig sein. Diese Formulare sollten bei der Validierung in sicheren Anwendungen nicht verwendet werden.
Wenn Sie also eine Regex mit ^
starten, wird die Frage beantwortet. Ja, es wird jedes Mal der Fehler ausgegeben. Bei dem Problem handelt es sich um Unicode-Zeichen. Sie erlauben so ziemlich alles, und es besteht die Möglichkeit, dass Sicherheits- oder Validierungsprobleme auftreten. Anstelle von nicht zulassen etwas (was umgangen werden kann), allow nur welche Zeichen gültig sind.
regexp: true
in Ihren Fusseln Optionen zulassen
. and [^...] in /RegExp/
hier können Sie die Regeln konfigurieren, die Sie verwenden möchten
Erwägen Sie, \W
anstelle von /^\w/
zu verwenden.
"!$7s-Gd,&j5d-a#".replace(/\W/g, '');
Für Ihren speziellen Fall würde dies nicht funktionieren, weil Sie Komma- und Bindestrich-Zeichen hinterlassen möchten, aber ich denke, es ist erwähnenswert.