C++ Qt RegExp 不匹配 @ 或 | 等特殊字符或^

标签 c++ regex qt

我目前正在为我的 RegExp 问题寻找解决方案。我已经阅读了文档并浏览了互联网,但似乎几乎没有人使用 RegExp - 至少,我找不到我要找的东西。

我目前正在根据 SANS 密码策略研究所开发密码强度检查器。 ( http://www.sans.org/security-resources/policies/Password_Policy.pdf )

它说强密码包含:

“Special” characters (e.g. @#$%^&*()_+|~-=`{}[]:";'<>/ etc)

所以我想将其实现到我的 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);

我期待着您的帮助。

最佳答案

尝试用反斜杠\转义你发现问题的字符

关于C++ Qt RegExp 不匹配 @ 或 | 等特殊字符或^,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18171038/

相关文章:

c++ - 如何为模板类创建 "factory function"?

c++ - 在多个 DLL 中分离类实现

c++ - QGraphicsScene - 添加带有少量不透明点的大透明像素图时,应用程序挂起很长时间

c++ - 撤消历史记录的问题(QUndoStack、QUndoView 和其他)

c++ - Qt 中 QMainWindow 上的深色透明层

c++ - 如何将 std::vector<std::vector<int>> 从 C++ 返回到 C++/CLI?

c++ - c 指针可以取值的范围?

ruby 正则表达式 : Matching a < without a matching >

java - 如何通过正则表达式提取 { } 之间的值?

javascript - 正则表达式没有捕获值(value)