当前位置: 首页 > news >正文

Qt通过正则表达式筛选出字符串中的手机号

需求

用户需要聊天记录中含有11位的手机号码进行提醒的功能,所以需要在收到聊天消息后匹配查看是否存在手机号。如果找到然后提醒。

分析

主要的需求可以拆分为两点:

  1. 筛选出字符串里面的数字字符。
  2. 通过正则匹配数字字符是否是11位手机号码。
    一开始没有进行筛选数字字符串的动作,而仅仅通过正则表达式查找11位手机号。发现像嘻嘻138830978901333五这样超过11位的数字字符也能被匹配后。
    后面先筛选数字字符串,然后再去正则匹配。

代码实现

一、筛选字符串里面的数字字符

在Qt Assistant中查找QRegExp里面有一个demo可以通过正则表达式筛选字符串中的数字字符,通过一个循环保存到QStringList里面。

 QRegExp rx("(\\d+)");QString str = "Offsets: 12 14 99 231 7";QStringList list;int pos = 0;while ((pos = rx.indexIn(str, pos)) != -1) {list << rx.cap(1);pos += rx.matchedLength();}// list: ["12", "14", "99", "231", "7"] 

二、通过正则匹配是否是11位手机号

通过查看手机号的号段和对应的规则,写了如下的正则表达式:

^1([358][0-9]|4[579]|6[2567]|7[0135678]|9[0123589])[0-9]{8}$

参考如下两篇文章:

  1. Qt判断手机号码:匹配手机号码的正则
  2. 最新最全的手机号验证正则表达式
    后面封装函数如下:
bool HasPhoneNum(const QString& strNum)
{QRegExp rx("\\d+");QRegExp regx("^1([358][0-9]|4[579]|6[2567]|7[0135678]|9[0123589])[0-9]{8}$");QRegExpValidator regs(regx,0);QString d;int pos = 0;int nPos = 0;while ((pos = rx.indexIn(strNum, pos)) != -1) {QString strPhone = rx.cap(0);QValidator::State res = regs.validate(strPhone, nPos);if (QValidator::Acceptable == res) {return true;}pos += rx.matchedLength();}return false;
}
http://www.lryc.cn/news/188894.html

相关文章:

  • 【Pytorch】深度学习之数据读取
  • Maven教程
  • 一篇带你看懂异步:promise、async await
  • RocketMQ快速实战以及集群架构详解
  • 京东运营数据分析:2023年8月京东饮料行业品牌销售排行榜
  • ES6之函数的扩展二
  • Ubuntu-Ports更新源 ARM64更新源
  • 渗透测试怎么入门?(超详细解读)
  • MS31804四通道低边驱动器可pin对pin兼容DRV8804
  • Fastadmin 子级菜单展开合并,分类父级归纳
  • Idea创建springboot工程的时候,发现pom文件没有带<parent>标签
  • element树形控件编辑节点组装节点
  • 【算法-动态规划】斐波那契第 n 项
  • Linux系统运行级别详解,切换、配置和常见服务
  • 企业需要ERP系统的八大理由,最后一个尤其重要
  • Java-Atomic原子操作类详解及源码分析,Java原子操作类进阶,LongAdder源码分析
  • 算法通过村第十二关-字符串|黄金笔记|冲刺难题
  • 3ds Max渲染太慢?创意云“一键云渲染”提升3ds Max渲染体验
  • 记录一次公益SRC的常见的cookie注入漏洞(适合初学者)
  • [ACTF2020 新生赛]Exec1
  • DeepFace【部署 03】轻量级人脸识别和面部属性分析框架deepface在Linux环境下服务部署(conda虚拟环境+docker)
  • vuex的求和案例和mapstate,mapmutations,mapgetters
  • Docker 网络访问原理解密
  • 统信UOS离线安装nginx
  • 机器学习基础-手写数字识别
  • idea 插件推荐(持续更新)
  • 实现Promise所有核心功能和方法
  • 学习总结1
  • 使用 Apache Camel 和 Quarkus 的微服务(二)
  • pid-limit参数实验