正则表达式在QT开发中的应用

一.正则表达式在QT开发中的使用

1.模式匹配与验证:正则表达式最基本的作用就是进行模式匹配,它可以用来查找、识别或验证一个字符串是否符合某个特定的模式。例如,在表单验证中,可以使用正则表达式来检查用户输入的邮箱地址、手机号码或密码是否符合规定的格式。

2.字符串处理:使用正则表达式来搜索或替换文本中的特定模式。这大大提高了文本处理的效率,使得复杂的文本操作变得简单快捷。

其在web领域应该更广,如网络爬虫与数据挖掘,文本搜索与替换等,本文不做重点讲述。

二.在QT中的代码示例

1.模式匹配与验证

#include

QRegExp regxName("^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7

|8|9])\\d{8}$");//只能输入符合格式的电话号码

QValidator *validatorName = new QRegExpValidator(regxName);

ui->lineEdit->setValidator(validatorName);   

    

2.字符串处理

#include

QString str = "xcxjxcxc123asdasdas 345 asdasd";       

int pos = str.indexOf(QRegExp("[0-9]+"));

qDebug()<

qDebug()<

QString str2 = str;

str2.replace(QRegExp("[0-9]2") ,"AA"); //查早第一个匹配数字开始的两个数字替换为”AA”

qDebug()<

输出:

三.常用正则表达式

只允许输入数字英文字符和下划线 :   

^[0-9a-zA-Z_]+$

只允许输入数字英文字符和下划线以及中文字符 :   

^[A-Za-z0-9_\u4e00-\u9fa5]+$

只能以英文字符开头,后面包含英文字符数字下划线 :   

^[a-zA-Z][a-zA-Z0-9_]+$

第一个字符以英文字符开头,第二个字符以数字开头,后面包含英文字符数字下划线 :   

^[a-zA-Z][0-9][a-zA-Z0-9_]+$

校验基本日期格式如 2019/3/18 or 2019-03-18 的格式 :   

^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})+$

身份证号码的正则校验18位身份证号码 :

 ^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)+$

“yyyy-mm-dd“ 格式的日期校验已考虑平闰年 :

 ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)+$

校验手机号,下面是国内 13、15、18开头的手机号正则表达式 (可根据目前国内收集号扩展前两位开头号码):

 ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$

下面的这个表达式可以提取筛选出一段文本中的URL :   

^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?

经度的范围(-180,180): 保留8位小数的正则表达式:

^-?(180|1?[0-7]?\\d(\\.\\d{1,8})|[1-9]?\\d(\\.\\d{1,8})?)$

纬度的范围(-90,90): 保留8位小数的正则表达式:

^-?(90|[1-8]?\\d(\\.\\d{1,8})?)$

IP正则匹配:

QRegExp regExp("(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)");

if(!regExp.exactMatch(ip)) {

    flag = false;

}

else

    flag = true;

校验密码强度,密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。

//检验密码强度,在点击确认后调用.

bool IsMatchRegX(const QString& str)

{

    QString reg = "^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$";

    QRegExp rx(reg);

    bool ok = rx.exactMatch(str);

    return ok;

}

/*

必须包含一个大写,一个小写字母,且长度为8到16位

^(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9~!@&%#_]{8,16}$

必须包含一个大写,一个小写字母,一个特殊字符,且长度为8到16位

^(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@&%#_])[a-zA-Z0-9~!@&%#_]{8,16}$

必须包含一个大写,一个小写字母,一个数字,一个特殊字符,且长度为8到16位

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[~!@&%#_])[a-zA-Z0-9~!@&%#_]{8,16}$

*/

       

参考文章:https://blog.csdn.net/Superman___007/article/details/88637899

四.入门教程

https://www.runoob.com/w3cnote/regular-expression-30-minutes-tutorial.html#mission

你可能感兴趣的:(QT&C++实战系列,正则表达式,qt,开发语言)