QRegExpValidator Class

The QRegExpValidator class is used to check a string against a regular expression. More...

Header: #include <QRegExpValidator>
qmake: QT += gui
Inherits: QValidator

Properties

Public Functions

const QRegExp &regExp() const
void setRegExp(const QRegExp &rx)

Signals

void regExpChanged(const QRegExp &regExp)

Detailed Description

QRegExpValidator uses a regular expression (regexp) to determine whether an input string is Acceptable, Intermediate, or Invalid. The regexp can either be supplied when the QRegExpValidator is constructed, or at a later time.

When QRegExpValidator determines whether a string is Acceptable or not, the regexp is treated as if it begins with the start of string assertion (^) and ends with the end of string assertion ($); the match is against the entire input string, or from the given position if a start position greater than zero is given.

If a string is a prefix of an Acceptable string, it is considered Intermediate. For example, "" and "A" are Intermediate for the regexp [A-Z][0-9] (whereas "_" would be Invalid).

For a brief introduction to Qt's regexp engine, see QRegExp.

Example of use:

 // regexp: optional '-' followed by between 1 and 3 digits
 QRegExp rx("-?\\d{1,3}");
 QValidator *validator = new QRegExpValidator(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
 QRegExp rx("[1-9]\\d{0,3}");
 // the validator treats the regexp as "^[1-9]\\d{0,3}$"
 QRegExpValidator v(rx, 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

 rx.setPattern("\\S+");            // one or more non-whitespace characters
 v.setRegExp(rx);
 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
 rx.setPattern("[A-C]\\d{5}[W-Z]");
 v.setRegExp(rx);
 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
 rx.setPattern("read\\S?me(\.(txt|asc|1st))?");
 rx.setCaseSensitive(false);
 v.setRegExp(rx);
 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 QRegExp, QIntValidator, QDoubleValidator, and Settings Editor Example.

Property Documentation

regExp : QRegExp

This property holds the regular expression used for validation

By default, this property contains a regular expression with the pattern .* that matches any string.

Access functions:

const QRegExp &regExp() const
void setRegExp(const QRegExp &rx)

Notifier signal:

void regExpChanged(const QRegExp &regExp)