栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

qt使用正则表达式限制文本框的输入

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

qt使用正则表达式限制文本框的输入

qt使用QRegExp 类的对象存放正则表达式

话不多说直接上代码:

    QRegExp regexp("\d*");     //正则表达式,判断内容是否全为数字
	bool match = regexp.exactMatch("判断的内容");       //验证文本

知道这两句,和基本的正则表达式,就足以限制文本框的各种输入了

链接:常用正则表达式介绍

看起来很简单,但qt对于正则表达式的使用还有一些坑,最大的坑就是c++中的反斜杠

在正则表达式上,

正常语言,d表示数字,而c++中\d才能表示数字,在其他语言中\d表示字符"d"的意思

就是把每个单反斜杠全换成双反斜杠

以ip地址举例:

正常的ip地址正则表达式:

^((d|[1-9]d|1dd|2[0-4]d|25[0-5]).){3}(d|[1-9]d|1dd|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地址格式不正确");
        }
    });

截图:

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887121.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号