Qt简单使用正则表达式

server/2025/2/12 3:22:17/

正则表达式

  用于数据处理,数据查询,数据格式验证,替换文本,提取字串,相比str函数正则技术,开销小

在Qt简单使用正则表达式

  在qt中使用类QRegExp类使用正则表达式

  需要使用头文件

#include <QRegExp>

类函数

1. 默认构造函数  QRegExp () 产生一个正则表达式对象

QRegExp rx();

2. 有参构造函数 

QRegExp rx("正则语句");

3. isVaild () 函数 判断正则语句是否合法

bool value = rx.isValid(); //返回bool值存储在value中

4.exactMatch () 函数, 检验整串是否匹配返回 true或false

QString Temptel = tel;rx.exactMatch(Temptel) //conset QString &str 类型参数

5. 使用默认构造函数设置正则表达式

QRegExp ex;			           //定义QRegExp 
ex.setPatternSyntax(QRegExp::RegExp);	   //设置为RegExp模式ex.setCaseSensitivity(Qt::CaseSensitive);  //设置大小写敏感
ex.setPattern(QString("^[A-Za-z0-9]+$"));  //匹配所有大小写字母和数字组成的字符串
QString s = "kojad@0123";                  //定义字符串
ex.exactMatch(s); 			   //返回的值为false,因为s中含有@字符

6.注:默认构造函数是否区分大小写的区别

  • 区分大小写(Qt::CaseSensitive:在匹配时,正则表达式会严格区分字母的大小写。只有当待匹配的字符串中的字母大小写与正则表达式模式中的字母大小写完全一致时,才会匹配成功。
  • 当目标匹配字符串是否ABC,匹配字符串Abc exactMatch返回bool值使false
  • 不区分大小写(Qt::CaseInsensitive:在匹配时,正则表达式会忽略字母的大小写。只要待匹配的字符串中的字母与正则表达式模式中的字母在字符上相同,无论大小写,都会匹配成功。
  • 当目标匹配字符串是否ABC,匹配字符串Abc exactMatch返回bool值使true

7.注:setPatternSyntax 方法用于设置正则表达式的语法规则

 常见的 PatternSyntax 枚举值 

1. QRegExp::RegExp
  • 描述:这是默认的语法,使用 Perl 兼容的正则表达式语法。它支持丰富的元字符和模式匹配功能,例如字符类、量词、分组等,功能强大且灵活,是最常用的语法规则。
2. QRegExp::Wildcard
  • 描述:使用通配符语法,这种语法相对简单,主要使用 *? 两个通配符。* 表示匹配任意数量(包括零个)的任意字符,? 表示匹配单个任意字符。常用于文件路径匹配等场景。
3. QRegExp::FixedString
  • 描述:将模式字符串视为普通的固定字符串,不进行任何正则表达式的特殊处理,只进行简单的字符串相等比较。
4. QRegExp::RegExp2
  • 描述:这是另一种 Perl 兼容的正则表达式语法,与 QRegExp::RegExp 类似,但在某些特殊情况下可能有不同的行为,通常用于解决 QRegExp::RegExp 中存在的一些兼容性问题。
5. QRegExp::WildcardUnix
  • 描述:Unix 风格的通配符语法,与 QRegExp::Wildcard 类似,但在处理一些特殊字符时遵循 Unix 系统的规则。

Demo:验证手机号格式

#include <QMessageBox>#include <QRegExp>
    QRegExp rx("^1[3-9][0-9]\{9}");
    if(!(rx.exactMatch(Temptel))){
        QMessageBox::about(this,"提示","电话号码格式错误");
        return;
    }

---------------------------------------------------------------------------------------------------------------------------------


http://www.ppmy.cn/server/166932.html

相关文章

Android Knowledge

1、安卓采用Log工具打印日志&#xff0c;将日志分为5个等级 Log.e:表示错误信息 Log.w:表示警告信息 Log.i:表示一般信息 Log.d:表示调试信息。可把程序运行时的变量值打印出来&#xff0c;方便跟踪调试 Log.v:表示冗余信息 2、pc如何与Android os之间进行连接&#xff1a;通过…

深入理解指针初阶:从概念到实践

一、引言 在 C 语言的学习旅程中&#xff0c;指针无疑是一座必须翻越的高峰。它强大而灵活&#xff0c;掌握指针&#xff0c;能让我们更高效地操作内存&#xff0c;编写出更优化的代码。但指针也常常让初学者望而生畏&#xff0c;觉得它复杂难懂。别担心&#xff0c;本文将用通…

HarmonyOS:时间日期国际化

一、使用场景 在不同的国家和文化中&#xff0c;时间和日期格式的表示方法有所不同&#xff0c;使用惯例的不同点包括&#xff1a;日期中年月日的顺序、时间中时分秒的分隔符等。若应用中需展示时间日期&#xff0c;要确保界面以合适的方式显示&#xff0c;以便用户能够理解。 …

51单片机之引脚图(详解)

8051单片机引脚分类与功能笔记 1. 电源引脚 VCC&#xff08;第40脚&#xff09;&#xff1a;接入5V电源&#xff0c;为单片机提供工作电压。GND&#xff08;第20脚&#xff09;&#xff1a;接地端&#xff0c;确保电路的电位参考点。 2.时钟引脚 XTAL1&#xff08;第19脚&a…

【排序算法】桶排序

不能排序负数&#xff0c;适合数据较小但数据量较大的时候使用。 定义了0-9十个桶&#xff0c;先排序个位&#xff0c;向高位排序首先&#xff0c;拿到数值后&#xff0c;先看个位&#xff0c;个位是几就放到对应的桶&#xff0c;以队列的形式进行排列。从0-9取出数据&#xff…

DeepSeek-R1+对话页面本地部署保姆级教程

deepseek本地部署 第一步&#xff1a;安装ollama 到Ollama官网 https://ollama.com&#xff0c;点击下载&#xff0c;然后选择适合自己系统的版本&#xff0c;这里选择Windows&#xff1a; Download Ollama on Windows 下载完成之后选择安装&#xff0c;安装完成之后任务栏会…

RK3568上使用C++结合V4L2拉流,并RKMPP硬件编解码,并保存为MP4文件

在RK3568平台上使用C结合V4L2捕获视频流&#xff0c;并通过RKMPP进行硬件编码后保存为MP4文件&#xff0c;可以按照以下步骤实现&#xff1a; 1. 环境准备 硬件&#xff1a;RK3568开发板、摄像头模块。软件依赖&#xff1a; Linux内核支持V4L2。Rockchip MPP库&#xff08;RKM…

ViewModel和LiveData

‌ViewModel和LiveData是Android开发中用于管理界面数据的重要组件&#xff0c;它们共同工作以提升应用的稳定性和用户体验。‌ ViewModel ‌ViewModel‌是一个抽象类&#xff0c;旨在以注重生命周期的方式存储和管理界面相关的数据。其主要作用是在配置更改&#xff08;如屏…