网站打开慢 可以只换空间不换域名吗,网站建设经济可行性分析,建网站基础知识,张家港网站建设价格需求
用户需要聊天记录中含有11位的手机号码进行提醒的功能#xff0c;所以需要在收到聊天消息后匹配查看是否存在手机号。如果找到然后提醒。
分析
主要的需求可以拆分为两点#xff1a;
筛选出字符串里面的数字字符。通过正则匹配数字字符是否是11位手机号码。 一开始没…需求
用户需要聊天记录中含有11位的手机号码进行提醒的功能所以需要在收到聊天消息后匹配查看是否存在手机号。如果找到然后提醒。
分析
主要的需求可以拆分为两点
筛选出字符串里面的数字字符。通过正则匹配数字字符是否是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}$参考如下两篇文章
Qt判断手机号码匹配手机号码的正则最新最全的手机号验证正则表达式 后面封装函数如下
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;
}