
Qt4.8文档翻译:QRegExpValidator类参考,QRegExpValidator Class Reference
QRegExpValidator类被用于检查一个字符串是否匹配某个正则表达式。
QRegExpValidator使用 一个正则表达式 (regexp) 来确定某个输入字符串是处于以下三个状态中的哪一个: 可接受的( Acceptable )、未决的( Intermediate )或无效的( Invalid )。 该正则表达式可在构造QRegExpValidator 的时候就提供,或者日后再提供。
当 QRegExpValidator判断 一个字符串是否可接受 ( Acceptable ) 的时候, 会将所提供的正则表达式当成是以字符 串起始符号 ( ^ )开头 ,以字符串终止符号 ( $ )结束 ;匹配过程 是针对着整个输入字符串进行的,或者,如果指定 了一个大于0的起始位置的话则会针 从 指定的位置开始进行匹配判断。
如果 一个字符串是某个可接受的( Acceptable )字符串的前缀, 则会认为该字符串是未决的( Intermediate )。例如 ,对于正则表达 式 [A-Z][0-9] , "" 和 "A" 都是 未决 的 ( 而 " _ " 是 无效 的 )。
若想阅读关于Qt的正则表达式引擎的简要介绍的话,则参考 QRegExp 。
用法示例:
// 正则表达 式:可选 的 '-' ,后跟 1 到 3 位数字
QRegExp rx("-? \\ d{1,3}");
QValidator *validator = new QRegExpValidator(rx, this);
QLineEdit *edit = new QLineEdit(this);
edit->setValidator(validator);
以下是一些检验器示例。在实际代码中,一般应当将它们与一个部件关联起来使用,就像上面的示例那样。
// 整数 , 1 到 9999
QRegExp rx("[1-9] \\ d{0,3}");
// 检验 器会将该正则式当成"^[1-9]\\d{0,3}$"处理
QRegExpValidator v(rx, 0);
QString s;
int pos = 0;
s = "0"; v.validate(s, pos); // 返回Invalid
s = "12345"; v.validate(s, pos); // 返回Invalid
s = "1"; v.validate(s, pos); // 返回Acceptable
rx.setPattern(" \\ S+"); // 一个或多个非空白字符
v.setRegExp(rx);
s = "myfile.txt"; v.validate(s, pos); // 返回Acceptable
s = "my file.txt"; v.validate(s, pos); // 返回Invalid
// A, B 或 C 后跟 5位数字,后跟 W, X, Y 或 Z
rx.setPattern("[A-C] \\ d{5}[W-Z]");
v.setRegExp(rx);
s = "a12345Z"; v.validate(s, pos); // 返回Invalid
s = "A12345Z"; v.validate(s, pos); // 返回Acceptable
s = "B12"; v.validate(s, pos); // 返回Intermediate
// 匹配 大部分的 'readme'文件
rx.setPattern("read \\ S?me(\.(txt|asc|1st))?");
rx.setCaseSensitive(false);
v.setRegExp(rx);
s = "readme"; v.validate(s, pos); // 返回Acceptable
s = "README.1ST"; v.validate(s, pos); // 返回Acceptable
s = "read me.txt"; v.validate(s, pos); // 返回Invalid
s = "readm"; v.validate(s, pos); // 返回Intermediate
参考 QRegExp 、 QIntValidator 、 QDoubleValidator 和 设置信息编辑 器示例 。
HxLauncher: Launch Android applications by voice commands