2016-07-20 18 views
0

少なくとも1つの数字または1つの特殊文字があり、合計長が8以上の場合、パターンが一致する必要があります。正規表現のオプションおよびグループ

これは部分的に機能しますが、特殊文字または数値が最初にある場合のみです。

これまでのところ私が持っている:

/([\d]|[[email protected]#$%^&*()_+])([a-z]).{8,}/ 
+1

だけ知っているので、 '[AZ]は'も文字が含まれています'' [\]^'_'' –

+0

良い点、ありがとうございます。 – Adrian

+0

[Regex for Password]の重複の可能性があります少なくとも8文字、少なくとも1つの数字と大文字と特殊文字の両方を含む必要があります(http://stackoverflow.com/questions/19605150/regex-for-password-must-少なくとも8文字からなる少なくとも1つの数字とボット) –

答えて

3

はなぜRegExpをovercomplicate?確かに可能ですが、それらの要件に一致する可能性のある文字の組み合わせのすべての順列を指定する必要があります。ただ、これを行う:あなたは後方にそれをやっている

if (/[\[email protected]#$%^&*()_+]/.test(string) && string.length >= 8) { ... } 
+0

正規表現は次のようにすることもできます: '/ [\ d!@#$%^&*()_ +] /' – rgthree

+0

ああ、それを修正します。私はちょうど彼の正規表現をコピーした –

0

、積極特殊文字に一致するようにしようとしない、それは人々が/使用しなければならないことができるものを制限します。その代わり、試合あなたが例えば、ないない特別であると考えて何か:小切手の長さよりも

pw.length >= 8 && /\d/.test(pw) && /[^a-z\d\x20]/i.test(pw) 

、数字の存在は、その後、英数字ではない文字が存在するにもスペース(iフラグはケースます非感受性)。あなたはまた、スペースや通常(ジャンクに貼り付ける人を防ぐ)キーボードで入力することができない他の制御文字を禁止することもできます。

&& !/[\x00-\x20]/.test(pw) 
関連する問題