美国 phone QT Creator 中的号码验证

US phone number verification in QT Creator

我很难获得适用于美国 phone 号码的验证系统。

请注意,我是一个自学的'dev',只是出于好奇尝试一些东西,我的知识非常有限

好的,如上所述,我正在尝试从 LineEdit 验证美国 phone 号码,该号码应采用以下格式 +1 000-000-0000

所以在 google 上搜索后,我找到了一个 post 帮助我设置验证,但我无法让它为我的格式工作,

{
    //QRegExp nv("^\+?(1 |)[0-9]{3}+(-|)[0-9]{3}+(-|)[0-9]{3}+(-|)[0-9]{4}$");
    QRegExp nv("^\+1(\d{10})$");
    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;
    }
};

现在我不确定这是什么语言(我猜是 JavaScript)

("^\+?(1 |)[0-9]{3}+(-|)[0-9]{3}+(-|)[0-9]{3}+(-|)[0-9]{4}$")

但我似乎无法理解为什么它不接受我想要的格式的号码,并不断提示错误消息

这是一个正则表达式。请参阅 QRegExp class 文档。

原始正则表达式(您注释掉的那个)看起来比您保留的那个更接近。

我使用 discordd 上有人建议的网站来完成这项工作: https://ihateregex.io/expr/phone/#

结果是我的 REGEX

("^\+?(1 |)[0-9]{3}+(-|)[0-9]{3}+(-|)[0-9]{3}+(-|)[0-9]{4}$")

一对多

[0-9]{3}

迭代...这些也有错误的表述:

+(-|)

经过一些测试,我得到了这个为我工作:

 QRegExp nv("^\+?(1 |)[0-9]{3}\-[0-9]{3}\-[0-9]{4}$");