4

javascriptを使用してパスワード文字列を検証しようとしていますが、正規表現についてサポートが必要です。いくつかのチュートリアルを試しましたが、数量詞やメタ文字をエスケープする方法を理解するのに問題があると思います。

パスワード文字列に、次の範囲の1つ以上(最大32)の文字のみが含まれていることを確認したいと思います。

"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"012345678901234567890123456789"
"!@#%&/(){}[]=?+*^~-_.:,;"

最初の3つのスパンは非常に簡単ですが、最後のスパンはわかりません。基本的に、私のスクリプトは次のようになります。

var password = "user_input_password";

if (/^[A-Za-z0-9!@#$%...]{1,32}$/.test(password)) {
    document.write('OK');
} else {
    document.write('Not OK');
}

どんな助けや入力も大歓迎です、ありがとう!

4

3 に答える 3

4

一般に、バックスラッシュを使用してメタ文字をエスケープできます\。ただし、文字クラス内では、エスケープする必要があるのは],\-( は^最初だけ意味があります) だけです。のような[\w!@#%&/(){}[\]=?+*^~\-.:,;]ものは、あなたが望むことを行います。

\wに等しい[A-Za-z0-9_]

したがって、完全なテストは次のようになります。

/^[\w!@#%&/(){}[\]=?+*^~\-.:,;]{1,32}$/.test(password)
于 2011-11-26T08:03:20.763 に答える
2
/^[A-Za-z0-9!@#%&\/(){}\[\]=?+*^~\-_\.:,;]{1,32}$/
于 2011-11-26T08:05:15.993 に答える
0

空白と見なされないすべての文字(スペース、改行、タブ)を照合することもできます

/^[^\s]{1,32}$/.test(password);

引用符も除外するには(あなたの例では引用符は表示されませんでした)、次の場所に引用符を追加できます。

/^[^\s'"]{1,32}$/.test(password);
于 2011-11-26T08:14:00.023 に答える