QRegularExpressionValidator 类

QRegularExpressionValidator 类用于对字符串进行正则表达式检查。 更多...

头文件 #include <QRegularExpressionValidator>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承自 QValidator

属性

公共函数

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

重实现的公共函数

validate(QString &input, int &pos) const override

公共槽

voidsetRegularExpression(const QRegularExpression &re)

信号

voidregularExpressionChanged(const QRegularExpression &re)

详细描述

QRegularExpressionValidator 使用正则表达式(regexp)来确定输入字符串是否为 可接受中间无效。正则表达式可以在构建 QRegularExpressionValidator 时提供,也可以在之后提供。

如果正则表达式与字符串部分匹配,则结果被视为 中间。例如,"" 和 "A" 对于正则表达式 [A-Z][0-9](其中 "_" 会是 无效)是 中间

QRegularExpressionValidator 自动将正则表达式包裹在 \\A\\z 锚点中;换句话说,它总是尝试进行精确匹配。

使用示例

// 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);

以下我们提供了一些验证器的示例。在实际应用中,它们通常会像上面的示例一样与一个小部件关联。

// 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

另请参阅QRegularExpressionQIntValidatorQDoubleValidator

属性文档

正则表达式 : QRegularExpression

此属性存储用于验证的正则表达式。

默认情况下,此属性包含一个具有空模式的正则表达式(因此匹配任何字符串)。

访问函数

QRegularExpressionregularExpression() const
voidsetRegularExpression(const QRegularExpression &re)

通知信号

voidregularExpressionChanged(const QRegularExpression &re)

成员函数文档

[显式] QRegularExpressionValidator::QRegularExpressionValidator(QObject *parent = nullptr)

构造一个接受任何字符串(包括空字符串)为有效的验证器。

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

构造一个接受所有匹配正则表达式 re 的字符串的验证器。

[virtual noexcept] QRegularExpressionValidator::~QRegularExpressionValidator()

销毁验证器。

[覆盖虚拟] QValidator::State QRegularExpressionValidator::validate(QString &input, int &pos) const

重实现: QValidator::validate(QString &input, int &pos) const.

如果 input 与此验证器对应的正则表达式匹配,则返回 Acceptable,如果它部分匹配(例如,如果添加更多的有效字符,则可能是有效匹配),则返回 Intermediate,如果 input 不匹配,则返回 Invalid

如果 input 不匹配,则将 pos 参数设置为您提供的 input 参数的长度;否则,它不修改。

例如,如果正则表达式为 \w\d\d(单词字符,数字,数字),则 "A57" 是 Acceptable,"E5" 是 Intermediate,而 "+9" 是 Invalid

另请参阅QRegularExpression::match().

© 2024 The Qt Company Ltd. 本文档中包含的贡献的文档版权属于其各自的所有者。所提供的文档根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可。Qt 及其相关标志是 The Qt Company Ltd 在芬兰和/或其他国家的商标。所有其他商标都属于其各自的所有者。