关键词:Qt 正则表达式 QRegExp QMessageBox
1、建立Qt Application工程,设计UI[一个输入框,一个按钮];
2、Widget.h文件:
@H_403_29@@H_403_29@@H_403_29@@H_403_29@@H_403_29@@H_403_29@@H_403_29@@H_403_29@ @H_403_29@#ifndefWIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QRegExp>
#include <QMessageBox>
namespace Ui {
@H_403_29@ @H_403_29@ @H_403_29@ class Widget;
}
class Widget : public QWidget
{
@H_403_29@ @H_403_29@@H_403_29@ Q_OBJECT
@H_403_29@ @H_403_29@@H_403_29@ public:
@H_403_29@ @H_403_29@ @H_403_29@explicit Widget(QWidget *parent = 0);
@H_403_29@ @H_403_29@ ~Widget();
@H_403_29@ @H_403_29@private:
@H_403_29@ @H_403_29@ @H_403_29@ Ui::Widget *ui;
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@QRegExp rx;
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@QMessageBox msgBox;
@H_403_29@ @H_403_29@private:
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@void init(); //初始化函数
@H_403_29@ @H_403_29@private slots:
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@void checkPwd();
@H_403_29@};
#endif // WIDGET_H
3、Widget.cpp
@H_403_29@ @H_403_29@ #include "widget.h"
@H_403_29@ @H_403_29@ #include "ui_widget.h"
@H_403_29@ @H_403_29@ Widget::Widget(QWidget *parent) :
@H_403_29@ @H_403_29@ QWidget(parent),
@H_403_29@ @H_403_29@ui(new Ui::Widget)
@H_403_29@ @H_403_29@{
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ ui->setupUi(this);
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@this->init();
@H_403_29@ @H_403_29@}
@H_403_29@ @H_403_29@Widget::~Widget()
@H_403_29@ @H_403_29@{
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ delete ui;
@H_403_29@ @H_403_29@}
@H_403_29@ @H_403_29@ void Widget::init()
@H_403_29@ @H_403_29@{
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ //建立信号和响应函数
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@connect(ui->pushButton,SIGNAL(clicked()),SLOT(checkPwd()));
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@rx.setPatternSyntax(QRegExp::RegExp);
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@//对大小写字母敏感,即区分大小写
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@rx.setCaseSensitivity(Qt::CaseSensitive);
@H_403_29@ @H_403_29@ @H_403_29@ //匹配格式为所有大小写字母和数字组成的字符串,位数不限
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@rx.setPattern(QString("^[A-Za-z0-9]+$"));
@H_403_29@ }
@H_403_29@ @H_403_29@void Widget::checkPwd()
@H_403_29@ @H_403_29@{
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@QString pwd = ui->lineEdit->text();
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@if(pwd.isEmpty()) //检测密码输入框是不是为空
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@{
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ui->label2->setText("Password cant be empty!");
@H_403_29@ @H_403_29@ @H_403_29@@H_403_29@ @H_403_29@ ui->label2->setStyleSheet("color: rgb(255, 78, 25);");;
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@}
@H_403_29@ @H_403_29@ @H_403_29@ else
@H_403_29@ @H_403_29@ @H_403_29@{
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ui->label2->setText("");
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@if(rx.exactMatch(pwd))
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@{@H_403_29@
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@msgBox.setText("The password format is Right");
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@msgBox.exec();
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@}
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@else
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ {
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ msgBox.setText("Sorry,The password format is wrong!!\n
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ \nPlease reenter your password.");
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ msgBox.exec();
@H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ @H_403_29@ }
@H_403_29@ @H_403_29@ @H_403_29@}
@H_403_29@ @H_403_29@}
@H_403_29@4、main.cpp不用修改。
5、运行结果如下:

@H_403_29@ @H_403_29@当输入特殊字符时会提示错误: 
//------------------------------ THE END -----------------------------