Cześć.
Piszę sobie w Qt programik do zamiany liczby arabskiej z przedziału 1-3999 na rzymską. Postanowiłem zrobić walidację wejścia poprzez zapięcie na obiekt klasy QLineEdit wyrażenia regularnego. Użytkownik ma wpisywać ciąg 'N' liczb z zadanego przedziału oddzielonych przecinkami.
Tutaj zrobiłem wyrażenie opisujące liczbę z podanego przedziału i przecinek na końcu tej liczby:
[1-3]{0,1}[0-9]{0,3},{0,1}
Nie wiem jak zrobić powtarzanie tego wzorca. Dopisywałem już gwiazdki, tworzyłem grupę z całości w nawiasie i dopisywałem do tego również gwiazdki i inne zależności i albo walidował mi nieprawidłowe wyrażenie albo w ogóle nie chciał pisać.
Popełniłem taki slocik do testowania mojego wyrażenia:
void OknoGlowne::sprawdz(QString tekst){
QRegularExpression re("([1-3]{0,1}[0-9]{0,3},{0,1})");
QRegularExpressionMatch match=re.match(tekst);
if(match.hasMatch()){
QString matched=match.captured(0);
this->ui->leLiczby->setText(matched);
}
}
Slot jest podłączony do sygnału obiektu QLineEdit w ten sposób:
connect(this->ui->leLiczby,SIGNAL(textChanged(QString)),this,SLOT(sprawdz(QString)));
Przyznaję, że wyrażeń regularnych nie stosuje często i mam z tym problem.
Jak wymusić prawidłowe powtarzanie stricte tego wzorca, żeby dopuszczał po przecinku tylko liczby z podanego zakresu?
Pozdrawiam
Grzesiek