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

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

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地址格式不正确");
        }
    });

截图:

运行结果:

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/921664.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存