2016-11-23 57 views
-2

分隔的整數餘有使用以下正則表達式,以限制在文本框中輸入的數據: EXS:規則運算數的陣列都浮體和由逗號

  • 1,2,3
  • 2.2,3.1,3

如果用戶在輸入1.2,2,3後離開文本框。我必須在3點後刪除點並保存。

我開始僅限制進入的點或逗號與正則表達式「([。,] {1})」 但文本框接受一個點,而它允許進入3個逗號。

+2

所以,你想允許一個正則表達式的尾隨點?使用['^ [0-9] + [。]?[0-9] *(,[0-9] + [。]?[0-9] *)* $'](https:// regex101。 com/r/Lkhugb/1) –

+2

還是你的意思是你只允許在字符串末尾的那個點?試試'^ [0-9] +([。] [0-9] +)?(,[0-9] +([。] [0-9] +)?)* [。]?$'然後檢查字符串「endsWith」是否包含「。」和「truncate」。 –

+0

尾隨點不過是如果用戶忘記完成浮點值並停止點,那麼它必須被檢測到並且被忽略。而且我也不限制用戶只輸入3個這樣的值。它可以是n個值。 –

回答

2

對於正則表達式本身遵循Wiktor的Stribiżew的意見

你知道QRegexValidator? 對於在文本框中輸入的最佳途徑數據的驗證是使用QRegexValidator

http://doc.qt.io/qt-4.8/qregexpvalidator.html#details

// regexp: optional '-' followed by between 1 and 3 digits 
QRegExp rx("-?\\d{1,3}"); 
QValidator *validator = new QRegExpValidator(rx, this); 

QLineEdit *edit = new QLineEdit(this); 
edit->setValidator(validator); 

使用這個對象的用戶在該領域不能進入一個非有效的數據,以便您不要必須處理的東西,當用戶離開文本框

+0

是的,我知道。不幸的是我不能使用它。 –