我目前正在为我的 RegExp 问题寻找解决方案。我已经阅读了文档并浏览了互联网,但似乎没有人使用 RegExp - 至少,我找不到我要找的东西。
我目前正在根据 SANS 研究所的密码策略研究密码强度检查器。(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);
我期待着您的帮助。