0

私は.netに不慣れで、パスワードフィールドを検証したいという問題に悩まされています。パスワードは特殊記号を含む英数字文字列でなければならず、以下に示すコードを書きました

[Required(ErrorMessage = "Password is required")]
[RegularExpression(@"^[a-zA-Z0-9~!@#$%^&*]{8,15}$", ErrorMessage = "Password is not in proper format")]
public virtual string Password { get; set; }

ただし、パスワードの長さが 8 を超える場合は機能しません。アルファベットのみが含まれている場合でも、文字列に緑色の信号が表示されます。どうすればこの問題を克服できますか

4

3 に答える 3

0

肯定的な先読みアサーションを使用して、文字列の特定の条件を保証できます。

[RegularExpression(@"(?=.*[a-zA-Z0-9])(?=.*[~!@#$%^&*])[a-zA-Z0-9~!@#$%^&*]{8,15}", ErrorMessage = "Password is not in proper format")]

正規表現バリデーターを使用する場合、アンカーは必要ありません。正規表現は入力文字列全体に対して自動的に照合されます。

(?=.*[a-zA-Z0-9])文字列のどこかに文字または数字があることを、文字列の先頭からチェックしています。

(?=.*[~!@#$%^&*])文字列のどこかに特殊文字があることを、文字列の先頭からチェックしています。

[a-zA-Z0-9~!@#$%^&*]{8,15}その後、実際に文字列と一致し、許可された文字のみが許可されます。

于 2013-05-14T09:43:23.820 に答える