QRegularExpressionValidator Class
The QRegularExpressionValidator class is used to check a string against a regular expression. More...
| Header: | #include <QRegularExpressionValidator> |
| qmake: | QT += gui |
| Since: | Qt 5.1 |
| Inherits: | QValidator |
This class was introduced in Qt 5.1.
Properties
- regularExpression : QRegularExpression
Public Functions
| QRegularExpression | regularExpression() const |
Public Slots
| void | setRegularExpression(const QRegularExpression &re) |
Signals
| void | regularExpressionChanged(const QRegularExpression &re) |
Detailed Description
QRegularExpressionValidator uses a regular expression (regexp) to determine whether an input string is Acceptable, Intermediate, or Invalid. The regexp can either be supplied when the QRegularExpressionValidator is constructed, or at a later time.
If the regexp partially matches against the string, the result is considered Intermediate. For example, "" and "A" are Intermediate for the regexp [A-Z][0-9] (whereas "_" would be Invalid).
QRegularExpressionValidator automatically wraps the regular expression in the \\A and \\z anchors; in other words, it always attempts to do an exact match.
Example of use:
// 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);
Below we present some examples of validators. In practice they would normally be associated with a widget as in the example above.
// 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
See also QRegularExpression, QIntValidator, QDoubleValidator, and QRegExpValidator.
Property Documentation
regularExpression : QRegularExpression
This property holds the regular expression used for validation
By default, this property contains a regular expression with an empty pattern (which therefore matches any string).
Access functions:
| QRegularExpression | regularExpression() const |
| void | setRegularExpression(const QRegularExpression &re) |
Notifier signal:
| void | regularExpressionChanged(const QRegularExpression &re) |