1. 程式人生 > >限制QLineEdit的數值輸入範圍(QT正則表示式方法),順便簡單介紹下QT正則表示式方法

限制QLineEdit的數值輸入範圍(QT正則表示式方法),順便簡單介紹下QT正則表示式方法

首先看幾個例子:

1.限制浮點數輸入範圍為[-180,180]
    QRegexp rx("^-?(180|([1-9]?[0-9]|1[0-7][0-9])(\\.\\d)?)$");
    QRegExpValidator *pReg = new QRegExpValidator(rx, this);  
    lineEdit->setValidator(pReg);
2.限制浮點數輸入範圍為[-180,180]並限定為小數位後4位
    QRegExp rx("^-?(180|([1-9]?[0-9]|1[0-7][0-9])(\\.\\d{1,4})?)$");  
    QRegExpValidator *pReg = new QRegExpValidator(rx, this);  
    lineEdit->setValidator(pReg); 
3.限制浮點數輸入範圍為[-90,90]並限定為小數位後4位
    QRegExp rx("^-?(90|[1-8]?\\d(\\.\\d{1,4})?)$");  
    QRegExpValidator *pReg = new QRegExpValidator(rx, this);  
    lineEdit->setValidator(pReg);  
簡答說下這幾個正則表示式:
1. 限制浮點數輸入範圍為[-180,180]

   ^-?(180|([1-9]?\d|1[0-7][0-9])(\.\d)?)$  或者也可以寫成  ^-?(180|([1-9]?[0-9]|1[0-7][0-9])(\.[0-9])?)$

2.限制浮點數輸入範圍為[-180,180]並限定為小數位後4位

   ^-?(180|([1-9]?\d|1[0-7][0-9])(\.\d{1,4})?)$  或者也可以寫成  ^-?(180|([1-9]?[0-9]|1[0-7][0-9])(\.[0-9]{1,4})?)$

3.限制浮點數輸入範圍為[-90,90]並限定為小數位後4位

   ^-?(90|[1-8]?\d(\.\d{1,4})?)$

     1.式子中開頭的^和結尾的$限定字串的開始和結尾;
     2."-?" 表示一個或0個負號,這裡面的問號表示其前面的字元重複0次或1次;
     3.管道符“|”表示平行分組,表示180或其它形式;
     4.[1-9] 表示限定數字範圍為1到9,其餘類似,如果是有限幾個值,還可以用列舉的方式,比如限定-255到255時,第一個數字2的限定,應該表達為[1,2],這表示這個位置只允許是1或者2;
     5."\d"是一個轉義字元,表示匹配一位數字(0到9);
     6.“\.” 表示匹配小數點;
     7."\d+",這裡面的+表示其前面的\d重複一次或多次;
     8."\d{1,4}",裡面的{1,4}表示重複1到4次;


有了以上知識,下面我們可以很快的寫出限定[-255,255]的正則表示式:


[-255,255]整數:^-?(255|[1-9]?[0-9]|[1,2][0-5][0-4])$

[-255,255]小數:^-?(255|[1-9]?[0-9]|[1,2][0-5][0-4])(\.\d)?)$ 

下面是QT的常用的正則表示式:

表示式 說明
\r, \n 代表回車和換行符
\t 製表符
\\ 代表 "\" 本身
\^ 匹配 ^ 符號本身
\$ 匹配 $ 符號本身
元字元 說明
. 匹配除了換行符以外的任意字元
\w 匹配字母、數字、下劃線、漢字
\s 匹配任意的空白符
\b 單詞的開始或結尾
\~ 匹配字串的開始
$ 匹配字串的結束

如:

\ba\w*\b :匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然後是字母a,然後是任意數量的字母或數字(\w*),最後是單詞結束處(\b)。

\d+ :匹配1個或更多連續的數字。這裡的+是和*類似的元字元,不同的是*匹配重複任意次(可能是0次),而+則匹配重複1次或更多次。

\b\w{6}\b: 匹配剛好6個字元的單詞。


表示式 說明
[ ] 包含一系列字元
[^ ] 包含之外一系列字元

[[email protected]]: 匹配 "a" 或 "b" 或 "5" 或 "@"

[^abc]: 包含abc之外的任意字元

[f-k]: f-k之間的任意字元

1.簡單的轉義字元

    一些不便書寫的字元,採用在前面加 "/" 的方法。這些字元其實我們都已經熟知了。

表示式

可匹配

/r, /n

代表回車和換行符

/t

製表符

//

代表 "/" 本身

    還有其他一些在後邊章節中有特殊用處的標點符號,在前面加 "/" 後,就代表該符號本身。比如:^, $ 都有特殊意義,如果要想匹配字串中 "^" 和 "$" 字元,則表示式就需要寫成 "/^" 和 "/$"。

表示式

可匹配

/^

匹配 ^ 符號本身

/$

匹配 $ 符號本身

/.

匹配小數點(.)本身

2. 能夠與 '多種字元' 匹配的表示式

    正則表示式中的一些表示方法,可以匹配 '多種字元' 其中的任意一個字元。比如,表示式 "/d" 可以匹配任意一個數字。雖然可以匹配其中任意字元,但是隻能是一個,不是多個。這就好比玩撲克牌時候,大小王可以代替任意一張牌,但是隻能代替一張牌。

表示式

可匹配

/d

任意一個數字,0~9 中的任意一個

/w

任意一個字母或數字或下劃線,也就是 A~Z,a~z,0~9,_ 中任意一個

/s

包括空格、製表符、換頁符等空白字元的其中任意一個

.

小數點可以匹配除了換行符(/n)以外的任意一個字元

舉例1:表示式 "/d/d",在匹配 "abc123" 時,匹配的結果是:成功;匹配到的內容是:"12";匹配到的位置是:開始於3,結束於5。

舉例2:表示式 "a./d",在匹配 "aaa100" 時,匹配的結果是:成功;匹配到的內容是:"aa1";匹配到的位置是:開始於1,結束於4。

相關推薦

限制QLineEdit數值輸入範圍(QT表示式方法)順便簡單介紹QT表示式方法

首先看幾個例子: 1.限制浮點數輸入範圍為[-180,180] QRegexp rx("^-?(180|([1-9]?[0-9]|1[0-7][0-9])(\\.\\d)?)$"); QRegExpValidator *pReg = new QRegExpV

【資料運營】在運營中為什麼文字分析遠比數值型分析重要?一個實際案例五點分析(

https://www.pmcaff.com/article/index/408451832537216?from=profile 本文是《資料分析中,文字分析遠比數值型分析重要!》的下篇,以一個實際案例來聊聊文字分析在實際運營中如何落地。行為脈絡如下:先簡要講述文字分析的分支---情緒分析的基本原

QPainter::begin: Paint device returned engine == 0, type: 2 解決方法在使用第三方庫Qt視覺化節點編輯器時

QT節點編輯器:https://github.com/paceholder/nodeeditor 在使用的時候,沿著對角線縮放節點會出現崩潰的情況 報出來的錯誤卻是:Qt begin: Paint device returned engine == 0, t

replace限制文字框只能輸入數字數字和字母等的表示式

1.文字框只能輸入數字程式碼(小數點也不能輸入)  <input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">&

replace限制文本框只能輸入數字數字和字母等的表達式

文本框 rdd -- cti 也不能 輸入法 change ida after 1.文本框只能輸入數字代碼(小數點也不能輸入) <input onkeyup="this.value=this.value.replace(/\D/g,‘‘)" onafterpaste=

input框限制只能輸入正整數邏輯與和或運算 有時需要限制文字框輸入內容的型別本節分享下正則表示式限制文字框只能輸入數字、小數點、英文字母、漢字等程式碼。 例如,輸入大於0的整數 程式碼

有時需要限制文字框輸入內容的型別,本節分享下正則表示式限制文字框只能輸入數字、小數點、英文字母、漢字等程式碼。 例如,輸入大於0的正整數 程式碼如下: <input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^

學習記錄-對QtQLineEdit進行輸入字元限制

檢視幫助文件,瞭解到Qt對文字框的輸入限制是使用QValidator和QRegExp來進行處理。 QValidator*validator_10=newQIntValidator(0,99999,t

JS只能輸入數字數字和字母等的表達式

符號 正則表達式 value 整數 func undo body 點號 chang 2011-12-07 11:44 JS判斷只能是數字和小數點 0.不能輸入中文1)<input onpaste="return false;" type="text" name="

C# 設置textedit只能輸入英文數字劃線並且只能以英文開頭(表達式)

tex spa edit 數字 a-z pan ext C# TE this.textEdit1.Properties.Mask.EditMask = @"[a-zA-z][a-zA-Z0-9_]*"; C# 設置textedit只能輸入英文數字下劃線,並且只能

限定輸入範圍的使用者輸入框-要限制使用者輸入的字元範圍

限定輸入範圍的使用者輸入框-要限制使用者輸入的字元範圍,不然就會出現使用者輸入了一些不允許的字元,從而導致了系統出現錯誤的情況。 一般案例: 郵箱:只能輸入大小寫字母,數字,@,.等字元。其他字元(、|,/,?&,%$)等等都不能輸入。 手機號:只能輸入數字0-9

網易筆試題:輸入一個整數若該數能用幾個連續整數之和表示輸出所有可能的整數序列。

解題思路:           **找到數學規律。n以i為開頭的j個整數的和為i*j+j*(j-1)/2;判斷輸入的整數是否和計算結果相同。           如果相同則迴圈輸出以i為開頭的j個整數。           這個題目給我最大的啟示就是要學會用數學的方法來解決問題,在此之前我一直希望通過一種遞

js限制字數的輸入

disable cnblogs tar doc function alt img sub charset <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or

sqlserver 運行表達式調用c# 函數、代碼

exp pan net hit ng- 創建 val put creat --1.新建SqlServerExt項目,編寫 C# 方法生成 SqlServerExt.dll 文件 using System; using System.Data; usin

練習:編寫循環讓用戶輸入內容判斷輸入的內容以alex開頭的將該字符串加上_SB結尾

sed with 輸入 close lose highlight lex 字符串 用戶輸入 編寫循環,讓用戶輸入內容,判斷輸入的內容以alex開頭的,則將該字符串加上_SB結尾 while True: user = input(‘請輸入:‘)

1000行代碼徒手寫表達式引擎【1】--JAVA中表達式的使用

基礎上 unicode 要求 [1] 分配 find 通過 images char 簡介: 本文是系列博客的第一篇,主要講解和分析正則表達式規則以及JAVA中原生正則表達式引擎的使用。在後續的文章中會涉及基於NFA的正則表達式引擎內部的工作原理,並在此基礎上用1000行左右

解決archlinuxQT程序以及wineQQ無法輸入中文(.xinitrc)

light hup blog arc program xinitrc 無法 wineqq qt5 昨天安了i3wm,發現fcitx在很多程序中無法輸入中文,nixnote2,還有ss-qt5 查了wiki,明明有在~/.xinitrc中加入 export [email&#

關於textarea限制字符輸入

clas value tar str log art img image 技術分享 <textarea class="leaveMessage" oninput="if(value.length>76) value=value.substr(0,76)">

限制input只能輸入數字/數字和小數點

red onkeyup this span replace ice fff round logs 1.限制input只能輸入數字 <input id="Number" name="Number" type="text" class="form-control req

內置函數匿名函數表達式常用模塊

fun pan -s lam 內存地址 turn return bsp nbsp 匿名函數 1.函數沒有名字 2.函數體自帶return,所以不能在lambda中用return lambda x,y,z=1:x+y+z 等同於 def func(x,y,z=1):retu

表達式re 和collect

pan 都沒有 close 結果 dad split strong re.search 方法 各種括號在正則裏的用法: ()包裹一段字符串,外面用一個功能符號包含。 {}裏面加一個數字,表示運行多少次,如果{1,3}則表示運行1-3次。 [],裏面加數字,表示從哪到哪,例: