微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Qt之正则表达式

转自--》 http://blog.sina.com.cn/s/articlelist_2801495241_0_2.html

在用写程序的时候,往往会用到正则表达式,不仅仅是Web开发,MFC、GTK+、Qt开发的图形界面也是如此,只要了解其原理,语法也都大相径庭!

0、lineEdit非大写输入时,显示 no mathch

QRegExp passwdReg("^[A-Z]+$");
if( !passwdReg.exactMatch( pwdEdit1->text() ) )
qDebug() << "no match";

1、非汉字(6-20位)

常例:密码框

QRegExp password_reg_exp("[^\u4E00-\u9FA5]{6,20}");
QRegExpValidator *password_validator = new QRegExpValidator(password_reg_exp);

QLineEdit *password_line_edit = new QlineEdit();

password_line_edit->setText(QString("密码正则ok"));

QString password = password_line_edit->text();

if(!password_validator->regExp().exactMatch(password))
{
return false;
}

2、字母、数字、下划线组成(4-30位)

常例:用户名
QRegExp user_reg_exp("[A-Za-z0-9_]{6,30}");

3、整形范围

常例:端口

QIntValidator *int_validator = new QIntValidator(0,65535);

QLineEdit *int_edit = new QLineEdit();

int_edit ->setValidator(int_validator );

遇到的就这些了,以后使用再补充!

转自--》http://hi.baidu.com/imtoby/item/9d8cf349ec781b2710ee1edd

"^/d+$"  //非负整数(正整数+0)
"^[0-9]*[1-9][0-9]*$"  //正整数
"^((-/d+)|(0+))$"  //非正整数(负整数+0)
"^-[0-9]*[1-9][0-9]*$"  //负整数
"^-?/d+$"    //整数
"^/d+(/./d+)?$"  //非负浮点数(正浮点数+0)
"^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数
"^((-/d+(/./d+)?)|(0+(/.0+)?))$"  //非正浮点数(负浮点数+0)
"^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数
"^(-?/d+)(/./d+)?$"  //浮点数
"^[A-Za-z]+$"  //由26个英文字母组成的字符串
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串
"^[a-z]+$"  //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串
"^/w+$"  //由数字、26个英文字母或者下划线组成的字符串
"^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$"    //email地址
"^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$"  //url
"^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$"//年-月-日
"^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$"//月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"//Email
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"//电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"//IP地址

^([0-9A-F]{2})(-[0-9A-F]{2}){5}$//MAC地址的正则表达式
^[-+]?/d+(/./d+)?$//值类型正则表达式



QRegExp是Qt的正则表达式类. Qt中有两个不同类的正则表达式. 第一类为元字符.它表示一个或多个常量表达式. 令一类为转义字符,它代表一个特殊字符. 一.元字符 .匹配任意单个字符.例如,1.3可能是1.后面跟任意字符,再跟3 ^匹配字符串首.例如,^12可能是123,但不能是312 $配字符串尾.例如,12$可以是312,当不能是123 []匹配括号内输入的任意字符.[123]可以为1,2或3 *匹配任意数量的前导字符.例如,1*2可以为任意数量个1(甚至没有),后面跟一个2 +匹配至少一个前导字符.例如,1+2必须为一个或多个1,后跟一个2 ?匹配一个前导字符或为空.例如1?2可以为2或这12 二.统配模式 通过QRegExp::setPatternSyntax(QRegExp::Wildcard);可以将元字符设置为统配模式.在统配模式下,只有3个元字符可以使用.他们的功能没有变化. ?匹配任意单个字符,例如,1?2可以为1,后面跟任意单个字符,再跟2 *匹配任意一个字符序列.例如,1*2,可以为1,后面跟任意数量的字符,再跟一个2 []匹配一个定义的字符集合.例如,[a-zA-Z/.]可以匹配a到z之间任意一个字符和.[^a]匹配出小写a以外的字符. 三.转义序列 \.匹配"." \^匹配"^" \$匹配"$" \[匹配"[" \]匹配"]" \*匹配"*" \+匹配"+" \?匹配"?" \b匹配响铃字符,使计算机发出嘟的一声. \t制表符号 \n换行符号 \r回车符鉿 \s任意空格 \xnn匹配16进制为nn的字符 \0nn匹配8进制的nn字符

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐