QRegExp:没有这样的文件或目录

Smo*_*erg 3 c++ regex qt

我不明白为什么会出现以下错误:

C:\Users\jacqu\Desktop\SMG-DS\SMG-DS\orderform.cpp:8: 错误: QRegExp: 没有这样的文件或目录 ..\SMG-DS\orderform.cpp:8:10: 致命错误: QRegExp: 没有这样的文件或目录 8 | #include“QRegExp”| ^~~~~~~~~

即使我包含正则表达式,我仍然收到此消息,如下所示: #include <QRegExp>#include "QRegExp"

这是我使用它的代码:

bool orderform::nv(QString num) //Validates phone numbers
{
    QRegExp nv("^\\+?(1 |)[0-9]{3}\\-[0-9]{3}\\-[0-9]{4}$");
    nv.setPatternSyntax(QRegExp::RegExp);
    bool regMat = nv.exactMatch(num);
    if(regMat == false)
    {
    QMessageBox *message = new QMessageBox(this);
    message->setWindowModality(Qt::NonModal);
    message->setText("Please insert a valid phone number");
    message->setStandardButtons(QMessageBox::Ok);
    message->setWindowTitle("ERROR");
    message->setIcon(QMessageBox::Information);
    message->exec();
    ui->edtCustPhone->setFocus();
    ui->edtCustPhone->selectAll();
    return false;
    }else{
    return true;
    }
};
Run Code Online (Sandbox Code Playgroud)

小智 10

我认为您正在使用最新版本的 QT。例如 6.2.2 QRegExp 已从最新版本中删除,这就是 QT 无法找到该文件的原因。

我们必须在最新版本中使用 QRegularExpression 而不是 QRegExp。

  ex. Mobile number format +915525663366

     QRegularExpression rx("[+][1-9]\\d{0,12}");
     QValidator *l_validator = new QRegularExpressionValidator(rx, this);
     ui->mobileNoLineEdit_2->setValidator(l_validator);

  ex.Mobile number format 5525663366
     QRegularExpression rxnum("[1-9]\\d{0,12}");
     QValidator *l_valid = new QRegularExpressionValidator(rxnum, this);
     ui->mobileNoLineEdit_2->setValidator(l_valid);
Run Code Online (Sandbox Code Playgroud)