我需要一個QLineEdit,它必須表示一個範圍。 FE(1,2),對於這種表示我想設置一個驗證檢查器,以便用戶不寫其他符號。 在這種情況下,我有char + int + char + int + char,如下面的示例所示: Qt有任何功能來處理這個問題? 在此先感謝。如何限制QLineEdit中的表達式
回答
QRegExp expr("^[[,(]{1,1}(0|[1-9]{1,1}[0-9]{0,9})[,]{1,1}(0|[1-9]{1,1}[0-9]{0,9})[],)]{1,1}$");
這就是我想要的!我必須允許多於一個前導0-s。
這是不可能寫一個正則表達式接受只有有效的範圍,原因是你可以檢查語法,但不是數值(除非e正則表達式引擎有一些擴展)。
[1234,5678)
和
之間的差[5678,1234)
不在語法中(正則表達式是什麼),但是在語義(正則表達式不那麼強大)中。
對於檢查只是語法的正則表達式可能是
\[\d+,\d+\)
,或者,如果你也允許其他類型的區間邊界條件:
[\[)]\d+,\d+[\])]
我不想接受有效的範圍,我想接受有效的語法。 這意味着char int char int字符 –
我會建議不要讓所有的字符,但只有需要的。例如:
QRegExp("[\\\\\\(\\)\\{\\}]\\d[\\\\\\(\\)\\{\\}]\\d[\\\\\\(\\)\\{\\}]");
我會解釋:
[]這些包含您的字符的字符配套配件:\\(這實際上是匹配\標誌,因爲你需要一次逃脫它爲您定期Expression \和Qt String再次使它成爲\\),\(用於左括號等),您可以添加所有您想要匹配的字符,一個很好的幫助是這個正則表達式備忘錄
\ d匹配一個數字,如果您想要有多個數字,您可以使用\ d +至少一個或\ d {3}精確3位數字(+ 1或更多,?0或1, * 0或更多)
另一個例子是:對於具有中心字符是一個
QRegExp("[\\\\\\(\\)\\{\\}]\\d[,\\.]\\d[\\\\\\(\\)\\{\\}]");
。或一個標誌。
您可以使用Qt的Input Validator功能來實現此目標。
以下片段將限制您在指定的行編輯上的輸入。
QRegExp re("^[[,(]{1,1}(0|[1-9]{1,1}[0-9]{0,9})[,]{1,1}(0|[1-9]{1,1}[0-9]{0,9})[],)]{1,1}$");
QRegExpValidator *validator = new QRegExpValidator(re, this);
ui->lineEdit->setValidator(validator);
編輯 更新的正則表達式
在這種情況下,我可以寫入00000,2222,但是您不能允許多寫一個前導0.正確的是「^ [[,(){1,1}(0 | [1-9] {1,1} [0-9] {0,9})[,] {1,1}(0 | [1-9] {1,1} [0-9] {0, 9})[],)] {1,1} $「 –
您是否需要稍後刪除驗證程序? –
@TomášZato它沒有顯示在代碼片段中,但「this」參數設置了* parent參數,當父類是QObject時它將啓用自動資源清除(請參閱http://stackoverflow.com/a/3902325/798377 ) –
- 1. 限制表達式
- 2. 限制在正則表達式表達
- 3. 限制表達式中的位數
- 4. Nhibernate表達式。限制
- 5. 如何限制正則表達式中的字符?
- 6. 如何在正則表達式中設置限制?
- 7. 限制_末的正則表達式
- 8. 限制複雜的正則表達式
- 9. 對nginx正則表達式的限制?
- 10. nhibernate - 基於表達式的限制
- 11. 如何在pyqt中限制用戶輸入QLineEdit
- 12. 如何限制正則表達式的長度?
- 13. 如何限制正則表達式的findall()方法
- 14. 如何限制正在檢測太多的正則表達式?
- 15. 正則表達式限制數字的上限和下限
- 16. 正則表達式,字符數限制
- 17. 限制正則表達式字邊界
- 18. 正則表達式限制零
- 19. 正則表達式與限制
- 20. 正則表達式與長度限制
- 21. 限制正則表達式匹配
- 22. NHibernate標準限制與表達式
- 23. 正則表達式來限制數字
- 24. SSRS 2008R2表達式限制文本
- 25. Python正則表達式 - 限制結果?
- 26. 正則表達式來限制字符
- 27. ASP.NET正則表達式,限制數字
- 28. 正則表達式字符數限制
- 29. 按文件類型限制qlineedit
- 30. 如何自動生成QLineEdit-QCompleter上限
示例如下: (2,5] –
在我看來,不允許鍵入一些字符的輸入字段是一個可怕的想法(接近於在鼠標指針內捕捉鼠標移動)。請注意,許多用戶不能在不查看鍵盤的情況下鍵入內容,因此他們將鍵入禁止輸入的字符,稍後他們會驚訝地發現它們不存在,重新輸入整個內容(仍不看屏幕)。如果內容無效,則更好的方法是在靠近該字段的地方顯示一條消息。 – 6502