Как ограничить ввод между значениями 0.2 и 2 (В регулярном выражении)

Рейтинг: 2Ответов: 2Опубликовано: 03.05.2023
  • Как ограничить ввод между значениями не меньше 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()

Ответы

▲ 1Принят
^(?: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));

▲ 0

Подобрал сам ))

reg_ex = QRegExp("^([1][.|,][0-9]|[0|,|.][,|.][2-9]|[1]|[2]$)")