QRegularExpression 匹配邮箱地址
时间: 2023-10-30 08:07:12 浏览: 166
以下是使用QRegularExpression匹配邮箱地址的示例代码:
```cpp
#include <QRegularExpression>
#include <QString>
#include <QDebug>
int main()
{
QString email = "example@domain.com";
QRegularExpression email_regex("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$");
QRegularExpressionMatch match = email_regex.match(email);
if (match.hasMatch()) {
qDebug() << "Email address is valid.";
} else {
qDebug() << "Email address is invalid.";
}
return 0;
}
```
在上面的代码中,我们使用QRegularExpression创建了一个匹配邮箱地址的正则表达式。然后,我们使用match()函数来在输入字符串中查找匹配项。如果找到了一个匹配项,我们就可以判断该邮箱地址是否合法。
需要注意的是,在Qt 5.15及以上版本中,还可以使用QRegularExpressionValidator类来实现一个邮箱地址的验证器,该验证器可以在用户输入时实时验证邮箱地址的合法性。例如:
```cpp
#include <QApplication>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QRegularExpressionValidator>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *widget = new QWidget;
QLineEdit *emailEdit = new QLineEdit;
QRegularExpression email_regex("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$");
QRegularExpressionValidator *validator = new QRegularExpressionValidator(email_regex, emailEdit);
emailEdit->setValidator(validator);
QVBoxLayout *layout = new QVBoxLayout(widget);
layout->addWidget(emailEdit);
widget->show();
return app.exec();
}
```
在上面的代码中,我们创建了一个包含一个QLineEdit控件的窗口,该控件使用QRegularExpressionValidator类来验证用户输入的邮箱地址。如果用户输入的邮箱地址不合法,该控件会显示一个红色的边框来提示用户输入有误。
阅读全文