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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具