Frage

Ich versuche, eine vorhandene App zu lokalisieren, die die folgende Logik hat, die ein Kennwort-Textfeld zu bestätigen versucht. Ich gehe davon aus, dass dies nicht mit Sprachen mit Sonderzeichen arbeiten, die der Benutzer in das Textfeld eingeben kann. Hab ich recht? Ich glaube nicht, dass wir die Nutzer von der Eingabe nicht-Englisch-Letter (das heißt Arabisch, Chinesisch, etc.) einschränken mögen. Oder gibt es etwas, was ich nicht verstehen?

Regex ValidHex =
   new Regex("[A-Za-z1234567890_-]+", RegexOptions.IgnoreCase);
if (!ValidHex.IsMatch(e.Text))
{
   e.Handled = true;
}
War es hilfreich?

Lösung

Sie können tun, wie diese Unicode-Zeichen zu unterstützen:

[\p{L}\p{N}_-]+

Als Randbemerkung: Gibt es einen bestimmten Grund, warum Sie beschränken müssen, welche Zeichen sind erlaubt

Andere Tipps

Sie Passwörter nicht speichern!

Hash das Passwort ein Verschlüsselungs Hashfunktion und vergleichen Sie das mit.

Die reguläre Ausdruck ist nicht besonders gut, schränkt es die Benutzer-Optionen und erzwingt nichts (die Passwörter ‚a‘ und ‚AAAAAAA‘ passieren würde). Der Name deutet es wurde aus einem Ausdruck angenommen, daß Hex Zahlen validiert. Sie würden zumindest auf eine minimale Länge Bedingung hinzuzufügen (in der reg ex oder als e.Text.Length> 8).

Ein vernünftiger Ausdruck würde bestätigen, dass mindestens 1 char Form mehrere Gruppen verwendet wurden, ich ausgegraben diesen: @"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)" sehen Sie hier . Auch hier fügt einen Scheck Mindestlänge.

In diesem Beispiel nicht das Problem der Lokalisierung adressiert, Es ermöglicht nicht-lateinische Zeichen nur durch die ‚‘ und berücksichtigt nicht, sie erfüllen die [a-z] oder [A-Z] Anforderungen.

Haben Sie versucht, \ mit w anstelle von A-Za-z? Ich wette, dass um Lokalisierungsprobleme bekommen.

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