2

ここで新しいものがここで推奨されました。

変数に標準の[0-9]マーク内に少なくとも2つの数値があり、少なくとも2つの特殊文字がある場合、最小の長さを取得したい2つの式があります。

これが私がテストに使用しているコードです。

var noOfNumerics = /[0-9]/g; 
var noOfSplChats = /[~\!@#\$%\^&*_\-\+=`\|\\(\)\{\}\[\]:;"'<>,\.\?\/]/g; 

そして、これが実際のテストを行うコードです。私はチュートリアルを見てきましたが、私が見る限り、最小値と最大値の要件がありますが、実際には最大値は必要ありませんが、それが不可能な場合は問題ありません。

var numericsTest=noOfNumerics.test(Password);
var splCharTest=noOfSplChats.test(Password);

これは、間違って処理される入力の例です。

Password = 'test#1';

基本的にはそれだけです。少なくとも2つの数字と特殊文字の長さを追加する必要があります。その要件をスクリプトに追加するにはどうすればよいですか?

4

3 に答える 3

2

あなたはこれを行うことができます

var noOfNumerics = /.*\d.*\d.*/g; 

noOfSplChatsでも同じことができます

\d上記の正規表現から次のように置き換えるだけです[~\!@#\$%\^&*_\-\+=``\|\\(\)\{\}\[\]:;"'<>,\.\?\/]

于 2012-10-01T15:57:47.363 に答える
2

先読みを使用する:

/^(?=.*\d.*\d)(?=.*[!@#$].*[!@#$])/
于 2012-10-01T16:00:09.300 に答える
2

これには、将来必要な文字数を調整できるという利点があります。

function isValidPassword (p) {
    var numDigits = p.match(/\d/g).length;
    var numSpecial = p.match(/[~\!@#\$%\^&*_\-\+=`\|\\(\)\{\}\[\]:;"'<>,\.\?\/]/g).length;
    return numDigits >= 2 && numSpecial >= 2;
}

非常に長い文字列を検索する必要がある場合は、RegExp.execでループを使用して、カウントを取得したらすぐに終了できます。

于 2012-10-01T18:22:16.253 に答える