您的位置:首页 > 编程语言 > Qt开发

Qt【正则表达式】匹配中文汉字,和字母,过滤中英文符号

2018-11-13 14:39 3099 查看
QLineEdit *name_lineEdit = new QLineEdit;
QRegExp regx("^[\u4e00-\u9fa5a-zA-Z]+$");  //其中匹配中文[\u4e00-\u9fa5]
QValidator *validator = new QRegExpValidator(regx);
name_lineEdit->setValidator(validator);

上面这个正则表达式没有过滤掉中文符号,本想一个一个过滤,(如下),仍然无效

QRegExp regx("[^`~!@#$%^&*()-_+={}':;',\\[\\].<>/?¥……()——;’‘:“',。、?0-9]+$");

后响应QLineEdit 的textChanged的信号,在槽函数中过滤中文符号,成功!正则表达式无法过滤也因为编码问题。

connect(name_lineEdit, SIGNAL(textChanged(QString)), this, SLOT(slotNameFilter(QString)));

void SearchCondWidget::slotNameFilter(QString s)   //SearchCondWidget我的类
{
s.replace(QString::fromLocal8Bit("【"), "");
s.replace(QString::fromLocal8Bit("】"), "");
s.replace(QString::fromLocal8Bit("?"), "");
s.replace(QString::fromLocal8Bit("!"), "");
s.replace(QString::fromLocal8Bit("·"), "");
s.replace(QString::fromLocal8Bit("¥"), "");
s.replace(QString::fromLocal8Bit("……"), "");
s.replace(QString::fromLocal8Bit("("), "");
s.replace(QString::fromLocal8Bit(")"), "");
s.replace(QString::fromLocal8Bit("——"), "");
s.replace(QString::fromLocal8Bit("、"), "");
s.replace(QString::fromLocal8Bit(":"), "");
s.replace(QString::fromLocal8Bit(";"), "");
s.replace(QString::fromLocal8Bit("“"), "");    //引号两边分开过滤
s.replace(QString::fromLocal8Bit("”"), "");
s.replace(QString::fromLocal8Bit("’"), "");    //引号两边分开过滤
s.replace(QString::fromLocal8Bit("‘"), "");
s.replace(QString::fromLocal8Bit("《"), "");
s.replace(QString::fromLocal8Bit("》"), "");
s.replace(QString::fromLocal8Bit(","), "");
s.replace(QString::fromLocal8Bit("。"), "");
name_lineEdit->setText(s);
}

其中这个双引号(“”)和单引号(‘’)两边要分开过滤

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: