2017-04-17 10 views
0

と間違っている私は、パスワードの検証のためにJavaScriptを使用しています:検証は、@文字

$.validator.addMethod('mypassword', function(value, element) { 
    return this.optional(element) || (value.match(/^(?=.*\d)(?=.*[A-Z])[0-9a-zA-Z]{8,}$/)); 
}, 
'Password must contain at least one numeric and one uppercase alphabetic character.'); 

私は少なくとも一つの数字と1つの大文字のアルファベット文字であるためにパスワードが必要です。しかし、もし私が@, # ,$のような文字をパスワードに1つの数字と1つの大文字のアルファベット文字で入力すると、それでもエラーメッセージが表示されます。あなたの正規表現で

Password9 accepted 
[email protected] not accepted 

答えて

1

この部分は@を許可していません:

[0-9a-zA-Z] 

あなたが任意の制限をしたくない場合は、.{8,}[0-9a-zA-Z]{8,}を変更します。

1

あなたの正規表現によれば、パスワードは少なくとも8文字の英数字で構成されていなければなりません。 2番目のパスワードがこの基準と一致しません。お試しください。

/^(?=.*\d)(?=.*[A-Z]).{8,}$/ 

ただし、許可されている文字のセットを制限することができます。 äöüのような非英語の手紙。

あなたはとても

/^(?=.*\d)(?=.*[A-Z])[0-9a-zA-Z\%\&\/\$\@\#]{8,}$/ 

またはUnicode範囲を指定しようとするように、すべての許可された文字を一覧表示することがあります:

Javascript + Unicode regexes

1

(function(){ 
 
     var regex=/^(?=.*\d)(?=.*[A-Z])[!-~]{8,}$/; \t  
 
\t var arr=["Password9","[email protected]","[email protected]"]; 
 
\t for(var i=0;i<arr.length;i++){ 
 
\t \t console.info(arr[i]+"\t"+(regex.test(arr[i])?"accepted":"not accepted")); 
 
\t } 
 
    })();

それを試してみてください

関連する問題