パスワードパターンバリデーターを作成する必要があります
パスワードには次のものが必要です。
私はこの正規表現パターンを見つけました:
Validators.pattern('/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!$%@#£€*?&]')
しかし、バリデータは常に私の入力が無効であると主張します
errors:
pattern:
actualValue: "Test1234"
requiredPattern: "^/^(?=.*[A-Za-z])(?=.*d)[A-Za-zd!$%@#£€*?&]$"
https://regex101.com/r/AfAdKp/1 によると、この値は有効であると想定されています。
編集:明確にするため、Test1234は機能するはずです
現在の正規表現に複数の問題があります:
Validators.pattern
区切り文字は必要ありませんが、区切り文字を最初にスローしましたあなたが必要なのはこれです:
Validators.pattern('^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=\\D*\\d)[A-Za-z\\d!$%@#£€*?&]{8,}$');
参照 ライブデモはこちら
数量詞_[A-Za-z\d!$%@#£€*?&]{8,}
_を追加して、文字クラスを最低8回繰り返し、大文字と小文字のアサーションを分離する必要があります。
_Validators.pattern('^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)[A-Za-z\\d!$%@#£€*?&]{8,}$')
_
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d!$%@#£€*?&]{8,}$
^
_文字列の先頭に位置をアサート(?=.*[A-Z])
_後続が大文字であることを表明する前向きな先読み(?=.*[a-z])
_後に続くものが小文字であることを表明する前向きな先読み(?=.*\d)
_後に続くものが数字であることを断言する前向きな先読み[A-Za-z\d!$%@#£€*?&]{8,}
_文字クラスのいずれかの文字に8回以上一致します$
_行末の位置をアサート_const strings = [
"A88888jf",
"Aa88888jf",
"Aa888jf",
"AAAAAAAAAAA",
"aaaaaaaaaaaaaa",
"2222222222222222",
"1sAdfe44",
"$#fd#######"
];
let pattern = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d!$%@#£€*?&]{8,}$/;
strings.forEach((s) => {
console.log(s + " ==> " + pattern.test(s));
});
_