Qt之正規表示式

2022-09-16 23:54:10 字數 3283 閱讀 6996

**--》

在用寫程式的時候,往往會用到正規表示式,不僅僅是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]");

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))

2、字母、數字、下劃線組成(4-30位)

常例:使用者名稱

qregexp user_reg_exp("[a-za-z0-9_]");

3、整形範圍

常例:埠

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

qlineedit *int_edit = new qlineedit();

int_edit ->setvalidator(int_validator );

遇到的就這些了,以後使用再補充!

**--》

"^/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|d)-((0([1-9]))|(1[1|2]))-(([0-2]([1-9]))|(3[0|1]))$" // 年-月-日 

"^((0([1-9]))|(1[1|2]))/(([0-2]([1-9]))|(3[0|1]))/(d|d)$" // 月/日/年 

"^([w-.]+)@(([[0-9].[0-9].[0-9].)|(([w-]+.)+))([a-za-z]|[0-9])(]?)$"   //email 

"(d+-)?(d-?d|d-?d|^d)(-d+)?"     //**號碼 

"^(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5])$"   //ip位址

^([0-9a-f])(-[0-9a-f])$   //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字元

qt之正規表示式

qregexp是qt的正規表示式類.qt中有兩個不同類的正規表示式.第一類為元字元.它表示乙個或多個常量表示式.令一類為 轉義字元,它代表乙個特殊字元.一.元字元 匹配任意單個字元.例如,1.3 可能是1.後面跟任意字元,再跟3 匹配字串首.例如,12可能是123,但不能是312 配字串尾.例如,1...

qt之正規表示式

qregexp是qt的正規表示式類.qt中有兩個不同類的正規表示式.第一類為元字元.它表示乙個或多個常量表示式.令一類為 轉義字元,它代表乙個特殊字元.一.元字元 匹配任意單個字元.例如,1.3 可能是1.後面跟任意字元,再跟3 匹配字串首.例如,12可能是123,但不能是312 配字串尾.例如,1...

Qt之正規表示式

qt裡對大名鼎鼎的正規表示式有很好的支援,使用qregexp類,你可以非常快的完成對文字的驗證 資料提取 替換。qt的sdk包裡還提供了regexp的gui小工具,方便你對正規表示式的驗證。本文在qt4.5.3下驗證通過。你可以使用qregexp exactmatch來判斷乙個字串是否符合乙個pat...