今天下班比较早,在家可以安心理清楚知识点了,今天我们来详细讨论一下qt自己的正则表达式问题 。
其实在项目中,经常会碰到校验ip是否合法,或者在输入的时候需要你三位数字输入一组,总共输入四组这样的形式。那么我们今天就来汇总下,qt中如何使用正则表达式。
[abc]表示 只包含abc
[^abc] 不包含abc
\s 匹配任意空白字符
\S 匹配任意非空白字符
\d 匹配任意数字
\D 匹配任意非数字
\w 匹配任意单字字符
\W 匹配任意非单字字符
a{3} 三个a
a{3,} 3个或者3个以上的a
a?代表0个a或者1个a
a*代表0,1或者多个
a+代表1个或者多个
a{3,6}代表3-6个之间个a,也包括3和6.
(a|b) 顾名思义,a或者b
^ 一行的最前
$一行的最后
这里面我没有列很多的正则各种说明,因为这些大家可以轻松的查到,在这里我通过一些关键性的代码,将正则表达式在qt的用法体现了出来。
还是以ip输入为例,如果我们只限制他输入数字的话,就新建qRegExp一个对象,用指定格式来初始化。
将这个对象作为validator的初始化条件即可。即可起到限制的作用。
大家可以根据以上的规则,在如下代码的Qvalidator里去实验,看是否可以只能输入规则内的数据。
#include "mainwindow.h"
#include <QWidget>
#include <QRegularExpression>
#include <QRegExpValidator>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QWidget *w =new QWidget();
edit =new QLineEdit();
QRegExp regx("[1-9][0-9]+$");
QValidator *validator=new QRegExpValidator(regx,edit);
edit->setValidator(validator);
layout =new QVBoxLayout();
layout->addWidget(edit);
w->setLayout(layout);
setCentralWidget(w);
}
MainWindow::~MainWindow()
{
}