JavaScriptでRegexテストを作成して、これらの文字を含む文字列をテストしようとしています。
!$%^&*()_+|~-=`{}[]:";'<>?,./
もし興味があるなら:)
私が取り組んでいる非常にクールなパスワード変更アプリケーションのためです。興味のある方のために、残りのコードを紹介します。
パスワード要件をリストした表があり、エンドユーザーが新しいパスワードを入力すると、正規表現の配列をテストし、対応する表の行にチェックマークを付けます...チェックアウト:)これを追加するだけですvalidation
配列の4番目の項目の代わりに。
var validate = function(password){
valid = true;
var validation = [
RegExp(/[a-z]/).test(password), RegExp(/[A-Z]/).test(password), RegExp(/\d/).test(password),
RegExp(/\W|_/).test(password), !RegExp(/\s/).test(password), !RegExp("12345678").test(password),
!RegExp($('#txtUsername').val()).test(password), !RegExp("Cisco").test(password),
!RegExp(/([a-z]|[0-9])\1\1\1/).test(password), (password.length > 7)
]
$.each(validation, function(i){
if(this)
$('.form table tr').eq(i+1).attr('class', 'check');
else{
$('.form table tr').eq(i+1).attr('class', '');
valid = false
}
});
return(valid);
}
はい、対応するサーバー側の検証もあります!
これの正規表現は本当に簡単です。文字クラスを使用するだけです。ハイフンは文字クラスの特殊文字であるため、最初にする必要があります。
/[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/
他の正規表現のメタキャラクターもエスケープする必要があります。
Edit:ハイフンは、文字の範囲を表すために使用できるため、特別です。この同じ文字クラスは、次の範囲で簡素化できます。
/[$-/:-?{-~!"^_`\[\]]/
3つの範囲があります。 「$」を「/」に、「:」を「?」に、「{」を「〜」に。最後の文字列は、! "^ _` []の範囲でより単純に表すことはできません。
ACSIIテーブル を使用して、文字クラスの範囲を検索します。
最もシンプルで最短の方法は、これを使用することです:
/[\W\S]/
つまり、数字でも英字でもないすべての文字(\W
)または空白文字(\S
)です。
ジェフのソリューションほど完璧ではないかもしれませんが、もっとシンプルで実用性に違いはないと思います。