(Qt)同时针对多个正则表达式验证字符串

时间:2019-02-27 18:51:20

标签: c++ regex qt

我正在根据正则表达式检查包含车辆登记信息的字符串的有效性。对于需要的每个条件,我都有几个正则表达式。我如何才能针对所有reg表达式验证字符串,而不必将它们组合为一个表达式或执行类似操作来确定其是否有效?

if( s_expGP.exactMatch(lineEdit->text()) ||
    s_expGPNew.exactMatch(lineEdit->text()) ||
    s_expPersonal.exactMatch(lineEdit->text()) ||
    s_expGov.exactMatch(lineEdit->text()) )
{
    //do stuff
}

2 个答案:

答案 0 :(得分:1)

唯一的选择是通过合并s_expGP,s_expGPNew,s_expPersonal和其余的(如果可能的话)来创建单个正则表达式,否则我认为没有其他方法。

答案 1 :(得分:0)

如果要测试的正则表达式数量很多,或者您可能需要多次验证字符串。您可以创建这样的函数

bool isValid(const QVector<QRegExp>& regExps, const QString& input)
{
    for(QRegExp exp : regExps)
    {
        if(!exp.exactMatch(input))
            return false;
    }
    return true;
}

或者像使用静态regexp一样使用静态QVector。