QT 入門之正規表示式

2021-10-06 05:58:28 字數 2041 閱讀 7515

在qlineedit中常常需要受到很多約束,這裡就可以使用正規表示式

符號功能

^一行的開頭

$一行的結尾

[a-z]

輸入a-z的單個小寫字母

[a-za-z]

輸入大寫或小寫的單個字母

[abcd]

只能輸入a、b、c、d其中乙個

\d輸入[0-9]任意數字

\d輸入非數字的字元

\w輸入任意單字元

\w輸入任意非單字元

[0-9]

和\d的效果一致

a|b表示a或b

a?表示a可輸入1次或0次

a*表示輸入出現0次或者多次

a+表示可以輸入1次或者多次

a輸入5個a

a輸入5個至16個a

a輸入5個以上的a

[\u4e00-\u9fa5]

匹配中文(中字元也能輸入)

注意:在**中除了中文的[\u4e00-\u9fa5]這裡面的\不用雙寫,其他的\都要寫成\\這樣。

//需要標頭檔案

#include

//正則表達

//建立乙個qlineedit物件 *iplineedit;

qlineedit *iplineedit =

newqlineedit

(this);

//寫乙個192.168.0.0 到 192.168.255.255的正規表示式

qstring ip =

"192\\.168((\\.(2[0-4]\\d|25[0-5]|1\\d|[1-9]?\\d)))"

;//建立qregexp 變數rx,把上面寫好的正規表示式匯入

qregexp rx

(ip)

;//建立qregexpvalidator 並構造

qregexpvalidator *preg =

newqregexpvalidator

(rx,

this);

//將已經建立好的lineedit物件設定正規表示式

iplineedit-

>

setvalidator

(preg)

;

這裡我們解讀一下上面的正規表示式

先看口號裡面的表示式 ((\.(2[0-4]\d|25[0-5]|1\d|[1-9]?\d)))我們以 | 為界限分開

因為這些使用|符號連線(表示「或」的關係),所以範圍為0-255,所以可以化簡成[0-255]

然後我們再往外面一層看(\.[0-255]),這個意思就是重複「 . 0到255」兩次

注意:這裡\.表示輸入乙個小數點

最後我們再看192\.168(\.[0-255])的意思就是前面的7位我們必須寫成192.168後面接上兩次.0-255

如果有你使用的是中文,並且要過濾掉中文字元。那麼要做這些處理

//建立乙個

qlineedit *my_lineedit =

new qlineedit;

//表示匹配乙個或者多個中文字元

qregexp rx

("^[\u4e00-\u9fa5]+$");

//匯入正則

qvalidator *preg =

newqregexpvalidator

(regx,

this);

my_lineedit-

>

setvalidator

(preg )

;//連線槽函式

connect

(my_lineedit,

signal

(textchanged

(qstring)),

this

,slot

(slotnamefilter

(qstring)))

;//searchcondwidget我的類

void searchcondwidget::

slotnamefilter

(qstring s)

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