Qt中正则表达式(笔记)
在Qt中使用正则表达式得方式 :
QRegExp regxName("^[0-9a-zA-Z_]+$");
QValidator *validatorName = new QRegExpValidator(regxName);
ui->lineEdit->setValidator(validatorName); //ui为lineEdit的控件
正则表达式提取字符串中的数字方法 :
QString WndName("WndName1");
QRegExp rx("\\d+");
QString wndIndex;
rx.indexIn(WndName,0);
wndIndex=rx.cap(1);
qDebug()<<wndIndex;
正则表达式从一个字符串里提取特定的字段或数据 例如从"a=100"里提取"a"和"100" :
QString pattern("(.*)=(.*)");
QRegExp rx(pattern);
QString str("a=100");
int pos = str.indexOf(rx); // 0, 第一个的位置
// 如果找不到str,则返回-1
// 你也可以使用rx.indexin(str)
qDebug() << pos;
if ( pos >= 0 )
{
qDebug() << rx.matchedLength(); // 5, 匹配字符串到最后的长度
// 或者-1如果没有匹配
qDebug() << rx.capturedTexts(); // QStringList("a=100", "a", "100"),
// 0: 文本匹配模式
// 1: 第一个()捕获的文本
// 2: 第二个文本的捕获
qDebug() << rx.cap(0); // a=100, 文本匹配模式
qDebug() << rx.cap(1); // a, 第n个()捕获的文本
qDebug() << rx.cap(2); // 100,
qDebug() << rx.pos(0); // 0, 第n个捕获文本的位置
qDebug() << rx.pos(1); // 0
qDebug() << rx.pos(2); // 2
}
常用正则表达式 :
只允许输入数字英文字符和下划线 : ^[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- ./?%&=]*)?
说明 : 部分转载自各大平台网站,以作笔记...
上一篇: 进程通讯 (匿名管道)
下一篇: Mybatis 配置文件详解