1 基本知识
1.1简介
正则表达式(Regular Expression,通常简写为RegExp、RE等),预先定义一些字符或字符的组合,用于匹配文本中的一段字符串。
1.2用途
1.2.1验证
判断字符串是否符合某个标准,比如“是一个整数”或者“没有空格”。
1.2.2搜索
正则表达式提供了比普通字符串匹配更为强大的匹配方式,比如匹配下面的词语:mail, letter, correspondence,但是不包括email, mailman, letterbox等等。
1.2.3.查找并替换
正则表达式能够用一个不同的字符串,替换所有出现另一个字符串的地方,比如用&替换&,如果原先&后面已经有了amp;那么不替换。
1.3符号的作用
表达式 | 说明 |
\r,\n | 代表回车和换行 |
\t | 制表符 |
\\ | 代表“\”本身 |
\^ | 匹配^符号本身 |
\$ | 匹配$符号本身 |
/d | 任意一个数字,0~9中的任意一个 |
/w | 任意一个字母数字或下划线 |
/s | 包括空格、制表符、换页符等空白字符的其中任意一个。 |
元字符 | 说明 |
. | 匹配除了换行符以外的任意字符 |
\w | 匹配字母、数字、下划线、汉字 |
\s | 匹配任意的空白符 |
\b | 单词的开始或结尾 |
\~ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
2 在QLineEdit中的用法
2.1 对用户输入的限制
Void QLineEdit::setValidator(const QValidator *v);这个函数的意思是:令LineEdit只接收验证器v所匹配的输入,我们可以对输入的内容进行任意的限制。
2.2 检查输入是否符合格式
2.2.1QValidator的函数讲解
QValidator::State QRegExpValidator::validate(QString &input,int &pos)const;
如果输入与正则表达式相匹配,则返回Acceptable;如果部分匹配,则返回 Intermediate(部分匹配,意思是如果给它增加额外的字符则能够匹配正则表 达式);如果不匹配则返回Invalid。
2.2.2实例应用
比如上面的手机号输入框,控制其不能输入英文汉字等无关字符。
switch (index) {
case 0:
//无限制
validatorLineEdit->setValidator(0);
break;
case 1:
//只能输入整数
validatorLineEdit->setValidator(new QIntValidator( validatorLineEdit));
break;
case 2:
//实例,只能输入-180到180之间的小数,小数点后最多两位(可用于限制经纬度等)
QDoubleValidator *pDfValidator = new QDoubleValidator(-180.0, 180.0 , 2, validatorLineEdit);
pDfValidator->setNotation(QDoubleValidator::StandardNotation);
validatorLineEdit->setValidator(pDfValidator);