|  | Home · Overviews · Examples |

# QRegExpValidator Class Reference
[com.trolltech.qt.gui module]

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

Inherits `QValidator`.

## Detailed Description

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

`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.