0

MVC 4、かみそりでアプリケーションを開発しています。1 つのパスワード ビューを変更するには、次の条件を持つ検証を行う必要があります。

次のうち少なくとも 3 つに一致する必要があります。

1.大文字の英字

2.小​​文字の英字

3.数字

4. 特殊なキーボード文字 (script タグを除く)

今、モデルに次の正規表現を書きました

[RegularExpression("^([a-zA-Z0-9#$%=@!{},`~&*()'?.:;_|^/+\"-]{8,32})$", ErrorMessage = "Current Password is invalid")]

ただし、これは指定されたサブセットのいずれにも一致します。少なくとも3つ一致する必要があります。どうすればそれを行うことができますか?

4

1 に答える 1

1

パスワードの検証に正規表現を使用するのは良い考えではないかもしれませんが、先読みと or 演算子を|使用すると、これを行うことができます。

^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])).{8,32}$

この正規表現には 4 つの部分があります。

(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]) 

少なくとも 1 つの下位アルファ、1 つの上位アルファ、および 1 つの数字があることを確認します。

(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])(?=.*[a-z])(?=.*[0-9]) 

少なくとも 1 つの特殊文字、1 つの大文字、1 つの数字があることを確認します。

(?=.*[A-Z])(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])(?=.*[0-9])

少なくとも 1 つの大文字、1 つの特殊文字、および 1 つの数字があることを確認します。

(?=.*[A-Z])(?=.*[a-z])(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])

少なくとも 1 つの上部アルファ、1 つの下部アルファ、および 1 つの特殊文字があることを確認します。

|これら 4 つ (非キャプチャ グループにグループ化) を使用すると、4 つのうち 3 つの検証が得られます。

次に.{8,32}、パスワードの長さに使用します

于 2013-07-26T07:11:06.190 に答える