Domanda

Sto cercando di localizzare un'applicazione esistente che ha la seguente logica che tenta di convalidare una casella di testo password. Sto assumendo che questo non funziona con le lingue con caratteri speciali che l'utente può digitare nella casella di testo. Ho ragione? Non credo che vogliamo impedire all'utente di digitare caratteri non inglesi-tipo (cioè arabo, cinese, ecc). Oppure, c'è qualcosa che non sto capendo?

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

Soluzione

Si può fare in questo modo per supportare i caratteri Unicode:

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

Come nota a margine: non v'è alcun motivo specifico è necessario limitare quali caratteri sono consentiti

Altri suggerimenti

Non memorizzare le password!

Hash la password utilizzando un crittografica funzione di hashing e confrontare tale.

Questa espressione regolare non è particolarmente buona, limita le opzioni degli utenti e non impone nulla (le password 'a' e 'aaaaaaa' sarebbe passata). Il nome suggerisce è stata adottata da un'espressione che ha convalidato i numeri esadecimali. Si dovrebbe almeno avere per aggiungere una condizione minima lunghezza (in reg ex o come e.Text.Length> 8).

Un'espressione più ragionevole sarebbe convalidare che almeno 1 modulo di carattere diversi gruppi è stato utilizzato, ho scavato questo: @"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)" Vedi qui . Anche in questo caso, aggiungere un controllo di lunghezza minima.

In questo esempio non affronta il problema della localizzazione, permette caratteri non latini solo attraverso la '' e non considera soddisfarle [a-z] o requisiti [A-Z].

Hai provato a usare \ w invece di A-Za-z? Sto scommettendo che si aggirare problemi di localizzazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top