現在、RegExpの問題の解決策を探しています。私はドキュメントを調べてインターネットを調べましたが、ほとんど誰もRegExpを使用していないようです-少なくとも、探しているものが見つかりません.
私は現在、SANS Institute for password policies に従って、パスワード強度チェッカーに取り組んでいます。( http://www.sans.org/security-resources/policies/Password_Policy.pdf )
強力なパスワードには次のものが含まれていると書かれています。
「特殊」文字 (例: @#$%^&*()_+|~-=`{}[]:";'<>/ など)
だから私は私のQtプロジェクトにそれを実装したいと思っていました。関連するコードは次のとおりです。
bool specialChars = contains("[@|#|$|%|\^|&|*|(|)|_|+|\||~|-|=|\|`|{|}|\[|\]|:|\"|;|'|<|>|/]", password);
一方、含むは次のとおりです。
/**
* @brief PasswordStrenghChecker::contains
* @param needle
* @param hay
* @return
*/
bool PasswordStrengthChecker::contains(QString needle, QString hay)
{
QRegExp check(needle);
for(int i = 0; i < hay.length(); i++)
{
if ( check.exactMatch(hay.at(i)) )
{
return true ;
}
}
return false;
}
次に表示される結果を確認すると、その @ と他の文字は一致しません。ここで何が起こっているのですか?正規表現は、次のような他の条件でも問題なく機能します。
bool digits = contains("\\d", password);
bool lowerCase = contains("[a-z]", password);
bool upperCase = contains("[A-Z]", password);
私はあなたの助けを楽しみにしています。