正規表現で最低1文字、1文字、大文字の8文字をチェックします。正規表現が機能しない - 最小8文字、1数字、1特殊文字、1大文字
function checkPassword(str) {
var re = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[[email protected]#\$%\^&\*])(?=.{8,})$/;
return re.test(str);
}
正規表現で最低1文字、1文字、大文字の8文字をチェックします。正規表現が機能しない - 最小8文字、1数字、1特殊文字、1大文字
function checkPassword(str) {
var re = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[[email protected]#\$%\^&\*])(?=.{8,})$/;
return re.test(str);
}
KISS - これは簡単です。
文字列の長さは8文字以上ですか?いいえ?テストに失敗しました。はい?続行する。
文字列に対して4つの正規表現テストを実行します(パラメータごとに1つずつ)。
真実の価値があるということは、あなたが行けることを意味します。偽の値は検証を意味しません。
複雑なregexは、完全に理解していない、または完全にテストしていないと、奇妙なエッジケースで常にあなたを噛んでしまいます。理解しやすい小さな部分に分割し、テストを連続して実行します。あなたはスタイリッシュではなく、正しいものになりたい。
さらに良いことに、別々のテストを行うことで、どのテストが失敗したかをユーザーに伝えることができます。 –
^はい。理想的には、新たに追加されたそれぞれのチャンクでライブを検証し、すべての検証がパスしたら、送信ボタンから 'disabled'を削除します。それはより関与していますが、ユーザーフレンドリーでもあります。 – Chase
正規表現はjQueryとは何の関係もないことに注意してください。それらは純粋なJSです。私はタイトルを変更し、あなたの質問に再度タグを付けました –
'/^(?=.*[az])(?=.*[AZ])(?=.*[0-9])(?=.* [!=。{8、} $)/ ' – tsh
4つの明示的なテストがあるので、4つのテストを使用するだけではどうですか? '/.A8]/].every(re=>re.test(str))' [/.{8,}/、/ \ d /、/ [!@#\ $%\ ^&\ *]/'。 – RobG