
qt使用QRegExp 类的对象存放正则表达式
话不多说直接上代码:
QRegExp regexp("\d*"); //正则表达式,判断内容是否全为数字
bool match = regexp.exactMatch("判断的内容"); //验证文本
知道这两句,和基本的正则表达式,就足以限制文本框的各种输入了
链接:常用正则表达式介绍
看起来很简单,但qt对于正则表达式的使用还有一些坑,最大的坑就是c++中的反斜杠\
在正则表达式上,
正常语言,\d表示数字,而c++中\\d才能表示数字,在其他语言中\\d表示字符"\d"的意思
就是把每个单反斜杠全换成双反斜杠
以ip地址举例:
正常的ip地址正则表达式:
^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$
c++中的ip地址正则表达式:
^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$
在qt中我曾尝试过使用QString的replace方法替换反斜杠,但失败了,因为c++反斜杠的特性,并不能在字符串中找到字符反斜杠
自己一个个把单反斜杠换成双反斜杠费力还容易出错,可以通过在线替换字符工具手动进行替换
链接:在线文字内容批量替换工具
下面用一个demo演示一下:
QRegExp regexp("^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])$"); //正则表达式,判断输入内容是否合法
connect(ui->pushButton,&QPushButton::clicked,this,[=](){ //点击按钮时触发信号和槽
bool match = regexp.exactMatch(ui->lineEdit->text()); //验证文本
if(match)
{
QMessageBox::about(this,"提醒","ip地址格式正确");
}else{
QMessageBox::warning(this,"提醒","ip地址格式不正确");
}
});
截图:
运行结果:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)