Regex erlaubt bestimmte Sonderzeichen nicht

8

Ich habe die folgende Regex, die bestimmte Sonderzeichen nicht erlaubt:

%Vor%

Das funktioniert. Diese Regex akzeptiert ein Passwort, wenn es keine Sonderzeichen in der Klammer (~,.<>;':"\/\[\]\|{}()-=_+) enthält.

Mein Problem hier ist, dass ich auch keine Zahlen eingeben darf, was seltsam ist.

Alles, was ich hier verpasst habe? Vielen Dank im Voraus!

Hier ist ein Beispiel:

jsFiddle

    
Gerald 23.08.2013, 08:16
quelle

1 Antwort

10

Sie haben dort einen Zeichenbereich: )-= , der alle ASCII-Zeichen zwischen ) und = (einschließlich Zahlen) enthält. Verschiebe die - an das Ende der Klasse oder entkomme sie:

%Vor%

Außerdem müssen Sie nicht all diesen Zeichen entkommen:

%Vor%

Beachten Sie, dass es in Ihrem Fall wahrscheinlich für Sie ausreicht, test anstelle von match zu verwenden:

%Vor%

test liefert einen booleschen Wert (was alles ist, was Sie brauchen), während match ein Array mit allen einfangenden Gruppen zurückgibt (die Sie sowieso verwerfen).

Beachten Sie, dass Sie, wie Daren Thomas in einem Kommentar angibt, lieber entscheiden sollten, welche Zeichen Sie zulassen möchten. Weil der aktuelle Ansatz sich nicht um alle möglichen seltsamen Unicode-Zeichen kümmert, während man sich über einige ziemlich standardisierte wie zB _ beschweren kann. Um eine Whitelist zu erstellen, können Sie einfach sowohl die Zeichenklasse als auch die Bedingung invertieren:

%Vor%

Und schließe alle Zeichen ein, die du zulassen willst.

    
Martin Ender 23.08.2013, 08:17
quelle

Tags und Links