Qt 中的正则表达式与输入限制
Qt 中的正则表达式常用 QRegExp 类
一、正则表达式的常用匹配符
^test:匹配字符的开始[^test]:表示除 t, e, s, t 以外的字符$:表示匹配字符串的结束[0-9]:表示0到9之间的数字*:表示匹配前面的字符0次或多次,如a*表示匹配0次或多次a字符,[0-9]*表示匹配数字0次或多次+:匹配前面的字符1次或多次,如[0-9]+表示匹配数字0次或多次?:匹配前面的字符0次或1次,如a?表示匹配 a 字符0次或1次[a-z]:匹配 a到z之间的单个字符[a-z]{2}:匹配 a到z之间的任意两个字符[a-z]{2,}:匹配 a到z之间的任意字符个数大于或等于2
二、限制输入字符
1、 通过正则表达式可以限制用户的输入信息。设置匹配模式,不符合要求将无法输入
#include <QRegExp>
#include <QValidator>
// 1. 设置 lineEdit 只能输入以 1~9 开始的数字,且只能输入数字。
QRegExp rexPattern("^[1-9][0-9]*"); // 设置匹配模式
QRegExpValidator* validator = new QRegExpValidator(rexPattern); // 将匹配模式设为验证对象
ui.lineEdit->setValidator(validator); // 在输入控件 LineEdit 上设置该验证模式
// 2. 直接合在一起简写,如下:
ui.lineEdit->setValidator(new QRegExpValidator(QRegExp("^[1-9][0-9]*")));
// 3. 设置输入字符的最大个数
ui.lineEdit->setMaxLength(60); // 设置最多只能输入60个字符
2、常用的匹配形式
"[1-9]":设置匹配数字 1 到 9"^[1-9]":设置从匹配开始数字为 1到9,此时开始的时候无法输入 0"^[a-zA-Z_][a-zA-Z0-9_]*$":只包含字母、数字,下划线,且只能以字母和下划线作为开头."^-1$|^[1-9][0-9]*$:设置只能输入 -1 ,或者大于0的数字,中间用|分割两种情况
三、匹配输入的字串是否符合给定的正则表达式
// 设置匹配模式,也就是对应的正则表达式
QString pattern = "^[a-zA-Z_][a-zA-Z0-9_]*$";
QRegExp exp(pattern);
QString testStr = "_9test6889";
bool ret = exp.exactMatch(testStr); // 如果 testStr 符合该正则表达式,则返回 true,否则返回 false
浙公网安备 33010602011771号