Qt中正則表達式QRegExp使用

Qt的一些限制正則表達式


RegExp是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中的一個轉義序列,
需要在前面添加\\

 

一、以下字符在Qt的正則表達式的含義
0|[1-9]\\d{0,4} --> 0-99999
on_\w+_\w+      --> 表示任意符合qt規則的槽函數
T[\d]{3}
例子    解釋
[abc]    方括號中間是幾個字母,表示a,b,c這三個字符中的某個字符
[^abc]    除了a,b,c以外的某個字符
[a-z]    橫槓表示範圍,匹配a到z之間(包括a和z)的所有單個字符
[a-zA-Z]    a到z、A到Z的所有單個字符
^    在一行最前
$    在一行的最後
\s    匹配任意空白字符
\S    匹配任意非空白的字符
\d    任意數字
\D    任意非數字
\w    任意單字字符(字母、數字或下劃線)
\W    任意非單字字符
(a|b)    a或b
a?    ?代表0個或1個
a*    *代表0個或1個或多個
a+    +代表1個或多個
a{3}    3個a
a{3,}    3個或大於3個a
a{3,6}    a的個數在3和6之間(包括3和6)

一些常用的表達式:

^[1-9]d*$ //匹配正整數
^-[1-9]d*$ //匹配負整數
^-?[1-9]d*$ //匹配整數
^[1-9]d*|0$ //匹配非負整數(正整數 + 0)
^-[1-9]d*|0$ //匹配非正整數(負整數 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮點數
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配負浮點數
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮點數
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非負浮點數(正浮點數 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮點數(負浮點數 + 0)
評註:處理大量數據時有用,具體應用時注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26個英文字母組成的字符串
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字符串
^[a-z]+$ //匹配由26個英文字母的小寫組成的字符串
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字符串
^w+$ //匹配由數字、26個英文字母或者下劃線組成的字符串
在使用RegularExpressionValidator驗證控件時的驗證功能及其驗證表達式介紹如下:
只能輸入數字:“^[0-9]*$”
只能輸入n位的數字:“^d{n}$”
只能輸入至少n位數字:“^d{n,}$”
只能輸入m-n位的數字:“^d{m,n}$”
只能輸入零和非零開頭的數字:“^(0|[1-9][0-9]*)$”
只能輸入有兩位小數的正實數:“^[0-9]+(.[0-9]{2})?$”
只能輸入有1-3位小數的正實數:“^[0-9]+(.[0-9]{1,3})?$”
只能輸入非零的正整數:“^+?[1-9][0-9]*$”
只能輸入非零的負整數:“^-[1-9][0-9]*$”
只能輸入長度爲3的字符:“^.{3}$”
只能輸入由26個英文字母組成的字符串:“^[A-Za-z]+$”
只能輸入由26個大寫英文字母組成的字符串:“^[A-Z]+$”
只能輸入由26個小寫英文字母組成的字符串:“^[a-z]+$”
只能輸入由數字和26個英文字母組成的字符串:“^[A-Za-z0-9]+$”
只能輸入由數字、26個英文字母或者下劃線組成的字符串:“^w+$”
驗證用戶密碼:“^[a-zA-Z]w{5,17}$”正確格式爲:以字母開頭,長度在6-18之間,
只能包含字符、數字和下劃線。
驗證是否含有^%&'',;=?$"等字符:“[^%&'',;=?$x22]+”
只能輸入漢字:“^[u4e00-u9fa5],{0,}$”
驗證Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
驗證InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
驗證電話號碼:“^((d{3,4})|d{3,4}-)?d{7,8}$”
正確格式爲:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
驗證身份證號(15位或18位數字):“^d{15}|d{}18$”
驗證一年的12個月:“^(0?[1-9]|1[0-2])$”正確格式爲:“01”-“09”和“1”“12”
驗證一個月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
正確格式爲:“01”“09”和“1”“31”。
匹配中文字符的正則表達式: [u4e00-u9fa5]
匹配雙字節字符(包括漢字在內):[^x00-xff]
匹配空行的正則表達式:n[s| ]*r
匹配HTML標記的正則表達式:/<(.*)>.*|<(.*) />/
匹配首尾空格的正則表達式:(^s*)|(s*$)
匹配Email地址的正則表達式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配網址URL的正則表達式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章