Шаблон, который я предлагаю, преднамеренно длинный и избыточный, чтобы быть максимально эффективным (цель состоит в том, чтобы уменьшить максимально возможную работу механизма регулярных выражений):
QRegExp exp("^(?:[1-2][0-9]{0,2}(?:\\.[0-9]{1,2})?|3(?:[0-5]?[0-9]?(?:\\.[0-9]{1,2})?|60(?:\\.00?)?)|[4-9][0-9]?(?:\\.[0-9]{1,2})?|0(?:\\.[0-9]{1,2})?)° ?[LR]$");
lineEdit_->setValidator(new QRegExpValidator(exp, this));
Этот шаблон запрещает начальные нули для десятков и сотен и делает необязательными десятичные дроби, которые ограничены двумя цифрами (таким образом, конечная или ведущая точка не разрешены) Допускается необязательный пробел между °
и L
(или R
)
Теперь, если вам нужен шаблон, который точно соответствует маске 999.99°A
(т.е. начальные нули верны, нигде нет необязательных пробелов, всегда есть три цифры и два десятичных знака), вы можете использовать этот шаблон вместо предыдущего:
^(?:[0-2][0-9]{2}\\.[0-9]{2}|3(?:[0-5][0-9]\\.[0-9]{2}|60\\.00))°[LR]$
person
Casimir et Hippolyte
schedule
09.07.2014