QRegularExpressionValidator Class

Die Klasse QRegularExpressionValidator wird verwendet, um eine Zeichenkette gegen einen regulären Ausdruck zu prüfen. Mehr...

Kopfzeile: #include <QRegularExpressionValidator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Vererbungen: QValidator

Eigenschaften

Öffentliche Funktionen

QRegularExpressionValidator(QObject *parent = nullptr)
QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = nullptr)
virtual ~QRegularExpressionValidator()
QRegularExpression regularExpression() const

Reimplementierte öffentliche Funktionen

virtual QValidator::State validate(QString &input, int &pos) const override

Öffentliche Slots

void setRegularExpression(const QRegularExpression &re)

Signale

void regularExpressionChanged(const QRegularExpression &re)

Detaillierte Beschreibung

QRegularExpressionValidator verwendet einen regulären Ausdruck (regexp), um festzustellen, ob eine Eingabezeichenkette Acceptable, Intermediate oder Invalid ist. Der regexp kann entweder bei der Erstellung des QRegularExpressionValidator oder zu einem späteren Zeitpunkt übergeben werden.

Wenn die Regexp teilweise mit der Zeichenkette übereinstimmt, wird das Ergebnis als Intermediate betrachtet. Zum Beispiel sind "" und "A" Intermediate für die Regexp [A-Z][0-9] (während "_" Invalid wäre).

QRegularExpressionValidator umschließt den regulären Ausdruck automatisch in den Ankern \\A und \\z; mit anderen Worten, es wird immer versucht, eine exakte Übereinstimmung zu erzielen.

Beispiel für die Verwendung:

// regexp: optional '-' followed by between 1 and 3 digits
QRegularExpression rx("-?\\d{1,3}");
QValidator *validator = new QRegularExpressionValidator(rx, this);

QLineEdit *edit = new QLineEdit(this);
edit->setValidator(validator);

Im Folgenden stellen wir einige Beispiele für Validatoren vor. In der Praxis werden sie normalerweise mit einem Widget verbunden, wie im obigen Beispiel.

// integers 1 to 9999
QRegularExpression re("[1-9]\\d{0,3}");
// the validator treats the regexp as "^[1-9]\\d{0,3}$"
QRegularExpressionValidator v(re, 0);
QString s;
int pos = 0;

s = "0";     v.validate(s, pos);    // returns Invalid
s = "12345"; v.validate(s, pos);    // returns Invalid
s = "1";     v.validate(s, pos);    // returns Acceptable

re.setPattern("\\S+");            // one or more non-whitespace characters
v.setRegularExpression(re);
s = "myfile.txt";  v.validate(s, pos); // Returns Acceptable
s = "my file.txt"; v.validate(s, pos); // Returns Invalid

// A, B or C followed by exactly five digits followed by W, X, Y or Z
re.setPattern("[A-C]\\d{5}[W-Z]");
v.setRegularExpression(re);
s = "a12345Z"; v.validate(s, pos);        // Returns Invalid
s = "A12345Z"; v.validate(s, pos);        // Returns Acceptable
s = "B12";     v.validate(s, pos);        // Returns Intermediate

// match most 'readme' files
re.setPattern("read\\S?me(\\.(txt|asc|1st))?");
re.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
v.setRegularExpression(re);
s = "readme";      v.validate(s, pos); // Returns Acceptable
s = "README.1ST";  v.validate(s, pos); // Returns Acceptable
s = "read me.txt"; v.validate(s, pos); // Returns Invalid
s = "readm";       v.validate(s, pos); // Returns Intermediate

Siehe auch QRegularExpression, QIntValidator, und QDoubleValidator.

Dokumentation der Eigenschaft

regularExpression : QRegularExpression

Diese Eigenschaft enthält den für die Validierung verwendeten regulären Ausdruck

Standardmäßig enthält diese Eigenschaft einen regulären Ausdruck mit einem leeren Muster (der daher auf eine beliebige Zeichenfolge passt).

Zugriffsfunktionen:

QRegularExpression regularExpression() const
void setRegularExpression(const QRegularExpression &re)

Benachrichtigungssignal:

void regularExpressionChanged(const QRegularExpression &re)

Dokumentation der Mitgliedsfunktionen

[explicit] QRegularExpressionValidator::QRegularExpressionValidator(QObject *parent = nullptr)

Konstruiert einen Validator mit einem parent Objekt, das jeden String (auch einen leeren) als gültig akzeptiert.

[explicit] QRegularExpressionValidator::QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = nullptr)

Konstruiert einen Validator mit einem parent Objekt, das alle Zeichenketten akzeptiert, die mit dem regulären Ausdruck re übereinstimmen.

[virtual noexcept] QRegularExpressionValidator::~QRegularExpressionValidator()

Zerstört den Validator.

[override virtual] QValidator::State QRegularExpressionValidator::validate(QString &input, int &pos) const

Reimplements: QValidator::validate(QString &input, int &pos) const.

Gibt Acceptable zurück, wenn input mit dem regulären Ausdruck für diesen Validator übereinstimmt, Intermediate, wenn er teilweise übereinstimmt (d.h. eine gültige Übereinstimmung sein könnte, wenn zusätzliche gültige Zeichen hinzugefügt werden), und Invalid, wenn input nicht übereinstimmt.

Falls input nicht übereinstimmt, wird der Parameter pos auf die Länge des Parameters input gesetzt; andernfalls wird er nicht geändert.

Lautet der reguläre Ausdruck beispielsweise \w\d\d (Wort-Zeichen-Ziffer-Ziffer), dann ist "A57" Acceptable, "E5" ist Intermediate und "+9" ist Invalid.

Siehe auch QRegularExpression::match().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.