QRegExp正規表示式用法

2022-04-12 04:02:42 字數 4866 閱讀 2011

原文:

"^\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字元

這些表示式均以\開始, 與c++的轉義字元相同,所以為了定義qregexp中的乙個轉義序列,

需要在前面新增兩個\\

///下面是示例

qregexprx("([\\da-f]-)");

"^\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字元

這些表示式均以\開始, 與c++的轉義字元相同,所以為了定義qregexp中的乙個轉義序列,

需要在前面新增兩個\\

///下面是示例

qregexprx("([\\da-f]-)");

QregExp正規表示式

qt的sdk裡包含乙個很幫的gui工具,可以方便我們進行這類轉換並測試你的表示式。可以按照如下的方式開啟 開始 程式 qt sdk by nokia v2010.02.1 open source qtdemo tools regularexpression 可以選擇 launch 啟動程式,亦可以 ...

QRegExp正規表示式

qregexp正規表示式 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 ...

QT 正規表示式QRegExp

qt 正規表示式qregexp sf2gis 163.com 2015年1月10日 qregexp是以perl的正規表示式為基礎發展來的。可以使用簡單的萬用字元匹配,或者純字元匹配,也可以使用正規表示式匹配。使用setpatternsyntax 可以切換不同的匹配模式。使用exactmatch 驗證...