Qt 中的正则表达式与输入限制

Qt 中的正则表达式常用 QRegExp

一、正则表达式的常用匹配符

  1. ^test:匹配字符的开始
  2. [^test]:表示除 t, e, s, t 以外的字符
  3. $:表示匹配字符串的结束
  4. [0-9]:表示0到9之间的数字
  5. *:表示匹配前面的字符0次或多次,如 a* 表示匹配0次或多次a字符,[0-9]* 表示匹配数字0次或多次
  6. +:匹配前面的字符1次或多次,如 [0-9]+ 表示匹配数字0次或多次
  7. ?:匹配前面的字符0次或1次,如a? 表示匹配 a 字符0次或1次
  8. [a-z] :匹配 a到z之间的单个字符
  9. [a-z]{2}:匹配 a到z之间的任意两个字符
  10. [a-z]{2,}:匹配 a到z之间的任意字符个数大于或等于2

二、限制输入字符

1、 通过正则表达式可以限制用户的输入信息。设置匹配模式,不符合要求将无法输入

#include <QRegExp>
#include <QValidator>

// 1. 设置 lineEdit 只能输入以 1~9 开始的数字,且只能输入数字。
    QRegExp rexPattern("^[1-9][0-9]*");     // 设置匹配模式
    QRegExpValidator* validator = new QRegExpValidator(rexPattern); // 将匹配模式设为验证对象
    ui.lineEdit->setValidator(validator);     // 在输入控件 LineEdit 上设置该验证模式

// 2. 直接合在一起简写,如下:
    ui.lineEdit->setValidator(new QRegExpValidator(QRegExp("^[1-9][0-9]*")));

// 3. 设置输入字符的最大个数
    ui.lineEdit->setMaxLength(60); // 设置最多只能输入60个字符

2、常用的匹配形式

  • "[1-9]":设置匹配数字 1 到 9
  • "^[1-9]":设置从匹配开始数字为 1到9,此时开始的时候无法输入 0
  • "^[a-zA-Z_][a-zA-Z0-9_]*$":只包含字母、数字,下划线,且只能以字母和下划线作为开头.
  • "^-1$|^[1-9][0-9]*$:设置只能输入 -1 ,或者大于0的数字,中间用 | 分割两种情况

三、匹配输入的字串是否符合给定的正则表达式

// 设置匹配模式,也就是对应的正则表达式
QString pattern = "^[a-zA-Z_][a-zA-Z0-9_]*$";
QRegExp exp(pattern);

QString testStr = "_9test6889";

bool ret = exp.exactMatch(testStr); // 如果 testStr 符合该正则表达式,则返回 true,否则返回 false

posted @ 2023-11-02 10:44  Jeffxue  阅读(396)  评论(0编辑  收藏  举报