Как ограничить ввод между значениями 0.2 и 2 (В регулярном выражении)
- Как ограничить ввод между значениями не меньше 0.2 и не больше 2
Как написать регулярку такую /
from PyQt5.Qt import QApplication
from PyQt5.QtCore import QRegExp
from PyQt5.QtGui import QRegExpValidator
from PyQt5.QtWidgets import QWidget, QLineEdit
import sys
class MyWidget(QWidget):
def __init__(self, parent=None):
super(QWidget, self).__init__(parent)
self.le_input = QLineEdit(self)
# reg_ex = QRegExp("[0-9]{2,1}+.?[0-9]{,1}")
reg_ex = QRegExp("^([0-2]|[1-9][0-9]|100)$") # регулярка на вводимые значения
input_validator = QRegExpValidator(reg_ex, self.le_input)
self.le_input.setValidator(input_validator)
if __name__ == '__main__':
a = QApplication(sys.argv)
w = MyWidget()
w.show()
a.exec()
Ответы (2 шт):
Автор решения: almaz
→ Ссылка
Подобрал сам ))
reg_ex = QRegExp("^([1][.|,][0-9]|[0|,|.][,|.][2-9]|[1]|[2]$)")
Автор решения: ipatev_nn
→ Ссылка
^(?:0[,.][2-9]|1(?:[,.][0-9])?|2(?:[,.]0)?)$
^ - начало строки
(?:...) - незахватываемая группа
0[,.][2-9] - цифра 0 после которой идет один из разделителей и цифра в диапазоне от 2 до 9
| - логическое или
1(?:[,.][0-9])? - цифра 1 после которой в группе описан разделитель точка или запятая и любая цифра, на группу установлен квантификатор, что делает ее необязательной
|2(?:[,.]0)? - или 2 c необязательным написание разделителя и ноля
$ - конец строки
Пример на js:
const reg = /^(?:0[,.][2-9]|1(?:[,.][0-9])?|2(?:[,.]0)?)$/gm;
const str = `
0,1
0,2
1,3
2
2.1
2.0
1
,,2
02`;
console.log(str.match(reg));