これらは要件ですが、私の正規表現スキルには複雑すぎると思います...
. 6 ~ 10 文字の英数字
。許可された AZ,az,0-9,@,$,_
. 文字で始まる必要があります
。少なくとも 1 つの数値を含める必要があります
。2 つの連続した同一の文字を含めることはできません
。2 つの連続した同一の数字を含めることはできません
[A-Za-Z] = 文字のみなどの正規表現の基本は知っていますが、連続する文字となると...
string pattern1 = @"^[a-zA-Z]([a-zA-Z])*"; //start and any number of characters
string pattern2 = @"[0-9]+"; //one number or more numbers
string pattern3 = @"[@#$%]*"; // special symbol allowed
string pattern4 = @"(.)\1";//consecutive characters
string pattern5 = @"^(.){6,10}$"; //min max
パスワードを検証したい場合は、グループを使用してそうすることができます。
(?<a>[a-zA-Z])?(?<b>[0-9])?(?<c>[@%$#/\\\(\)])?
3 つのグループ (a、b、c) のいずれかに一致します。
上下の文字はグループ a になります
数字はグループbになります
特殊文字はグループcになります
regex.match.groups("a").count を使用して、グループ a の文字が見つかるかどうかを確認できます
3 つのグループすべてに文字が見つかった場合、パスワードは強力です。