gpt4 book ai didi

c++ - 如何使用 qregexp 验证电子邮件地址

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:52 25 4
gpt4 key购买 nike

我需要验证在 qlineedit 中输入的文本是否具有正则表达式的形式,我尝试使用这个:

void MainWindow::checkReg( QLineEdit& mail, const QCheckBox& skip, string type )
{
if(type == "mail")
{
if( skip.checkState() != 2)
{
QRegExp mailREX("\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b");

mailREX.setCaseSensitivity(Qt::CaseInsensitive);

mailREX.setPatternSyntax(QRegExp::Wildcard);

bool regMat = mailREX.exactMatch(mail.text());

if(regMat == false)
{
QMessageBox *message = new QMessageBox(this);
message->setWindowModality(Qt::NonModal);
message->setText("Inserte los datos en el formato correcto");
message->setStandardButtons(QMessageBox::Ok);
message->setWindowTitle("MainWindow");
message->setIcon(QMessageBox::Information);
message->exec();

this->ok = 0;

mail.clear();
}
else
this->ok = 1;
}
}
}

但是每次我输入像me@me.com这样的邮件邮件,都会出现错误信息。我也试过使用

int regMat = mailREX.indexIn(mail.text());

但它没有用。

提前致谢

最佳答案

为什么要将模式语法设置为通配符?您的代码可以使用 RegExp 模式语法(假设您理解,您的正则表达式本身已被简化):

QRegExp mailREX("\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b");
mailREX.setCaseSensitivity(Qt::CaseInsensitive);
mailREX.setPatternSyntax(QRegExp::RegExp);
qDebug() << mailREX.exactMatch("me@me.com");

打印true

关于c++ - 如何使用 qregexp 验证电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com