Hallo!
Ich habe ein problem mit einer Eingabeüberprüfung:
wie überprüfe ich einen String auf diese Fälle mit einer expression?
1-3stelligeZahl
1-3stelligeZahl/1-3stelligeZahl/usw
ich habe es hiermit probiert:
"(\\d{1,3}\\b(/)\\b{0,1}){0,}";
aber das funktioniert nicht so wie es soll -.-
Und zur Überprüfung selbst nehme ich an verwendet man am besten Wildcards suche mit exactMatch?
Ich hoffe ihr könnt mir helfen
Mfg, Bernhard
Eingabeüberprüfung mit Regular Expressions
-
- Beiträge: 15
- Registriert: 3. Februar 2008 15:40
Re: Eingabeüberprüfung mit Regular Expressions
Hallo Bernhard,LordBernhard hat geschrieben:Hallo!
Ich habe ein problem mit einer Eingabeüberprüfung:
wie überprüfe ich einen String auf diese Fälle mit einer expression?
1-3stelligeZahl
1-3stelligeZahl/1-3stelligeZahl/usw
ich habe es hiermit probiert:
"(\\d{1,3}\\b(/)\\b{0,1}){0,}";
aber das funktioniert nicht so wie es soll -.-
Und zur Überprüfung selbst nehme ich an verwendet man am besten Wildcards suche mit exactMatch?
Ich hoffe ihr könnt mir helfen
Mfg, Bernhard
so sieht die Abfrage aus:
"\\d{1,3}(/\\d{1,3})*"
\\d{1,3} => es wird einmal nach 1-3 Ziffern gesucht
(/\\d{1,3})* => beliebig oft (oder auch keinmal!) kann ein "/" und 1-3 Ziffern folgen...
That's it!
Gruß
Oli
-
- Beiträge: 15
- Registriert: 3. Februar 2008 15:40
Erstmal vielen dank für deine Antwort!!
jedoch habe ich hiermit noch ein paar probleme.. z.B. kommt bei 10/asdf 0 zurück... obwohl es eig. falsch sein sollte.. vielleicht übersteigen meine Erwartungen auch die Fähigkeiten von QRegexp .. aber ich möchte überprüfen, ob der komplette String korrekt ist nach diesen regeln.
So stelle ich mir das vor.. ich brauche allerdings später noch eine Begrenzung, wie oft so eine Folge vorkommen darf.
jedoch habe ich hiermit noch ein paar probleme.. z.B. kommt bei 10/asdf 0 zurück... obwohl es eig. falsch sein sollte.. vielleicht übersteigen meine Erwartungen auch die Fähigkeiten von QRegexp .. aber ich möchte überprüfen, ob der komplette String korrekt ist nach diesen regeln.
So stelle ich mir das vor.. ich brauche allerdings später noch eine Begrenzung, wie oft so eine Folge vorkommen darf.
Code: Alles auswählen
QString reg = "\\d{1,3}(/\\d{1,3})*";
QRegExp rx(reg);
QStringList temp;
temp<<"40"; //richtig
temp<<"40/"; //falsch
temp<<"40/60"; //richtig
temp<<""; //falsch
temp<<"/"; //falsch
temp<<"20/30/50"; //richtig
temp<<"-20/30"; //falsch (negativ)
temp<<"10/asdf"; //falsch (buchstaben)
for(int i=0;i<temp.size();i++)
{
qDebug()<<QString::number(rx.indexIn(temp.at(i)));
}
-
- Beiträge: 15
- Registriert: 3. Februar 2008 15:40
Damit so etwas beim nächsten Mal nach Möglichkeit vermieden wird, kann man u.a. den Regex Tester unterstützend verwenden: http://www.regex-tester.de/regex.htmldas war der Fehler