1

パスワードに少なくとも 1 つの大文字、少なくとも 1 つの小文字、および少なくとも 1 つの数字が含まれているかどうかを検証する次の正規表現があります。

Regex rxLowercase = new Regex( @"\p{Ll}" ); // Unicode: All lowercase letters
Regex rxUppercase = new Regex( @"\p{Lu}" ); // Unicode: All uppercase letters
Regex rxDigits = new Regex( @"\p{Nd}" ); // Unicode: All decimal digits

のような特定のプロパティに属性を入れたい

[RegularExpression( /* something here which combines above expressions */ )]
[StringLength( 1024, MinimumLength = 8 )]
public string NewPassword
{
    get;
    set;
}

これを達成する方法は?

4

2 に答える 2

3

正規表現はすべて文字列から初期化されるため、RegularExpression 属性のコンストラクターが文字列の配列を受け入れるようにするだけです。

NewPassword をメソッドに変更することをお勧めします (値を取得し、それらをハッシュし、ハッシュを比較してパスワードが一致するかどうかを確認できるようなパスワードを実装しないでください)。

メソッド内から属性を取得するには、次のようなものを使用します。

var attribute = (RegularExpression)typeof(YourClass).GetMethod("NewPassword")
    .GetCustomAttributes(typeof(RegularExpression), false).First();
于 2013-10-23T12:17:18.540 に答える
1

次のように、3 つの異なる先読みを使用してそれらを組み合わせることができます。

(?=.*\p{Ll})(?=.*\p{Lu})(?=.*\p{Nd})
于 2013-10-23T12:25:09.107 に答える