QRegularExpressionValidator 类
QRegularExpressionValidator 类用于对字符串进行正则表达式检查。 更多...
头文件 | #include <QRegularExpressionValidator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
继承自 | QValidator |
属性
- regularExpression : QRegularExpression
公共函数
QRegularExpressionValidator(QObject *parent = nullptr) | |
QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = nullptr) | |
虚 | ~QRegularExpressionValidator() |
QRegularExpression | regularExpression() const |
重实现的公共函数
虚 | validate(QString &input, int &pos) const override |
公共槽
void | setRegularExpression(const QRegularExpression &re) |
信号
void | regularExpressionChanged(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
另请参阅QRegularExpression、QIntValidator 和 QDoubleValidator。
属性文档
正则表达式 : QRegularExpression
此属性存储用于验证的正则表达式。
默认情况下,此属性包含一个具有空模式的正则表达式(因此匹配任何字符串)。
访问函数
QRegularExpression | regularExpression() const |
void | setRegularExpression(const QRegularExpression &re) |
通知信号
void | regularExpressionChanged(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 在芬兰和/或其他国家的商标。所有其他商标都属于其各自的所有者。