QT正则表达式---针对Ip地址系列
判断合法IP的QT正则表达式: bool IsIPaddress(QString ip) { QRegExp rx2("(//d+)(//.)(//d+)(//.)(//d+)(//.)(//d+)"); int pos = rx2.indexIn(ip); for(int i=0;i<4;i++) return false; } if(rx2.cap(7).toInt()==0) QMessageBox::information(this,tr("IP地址错误")); return false; } return false; } QMessageBox::information(this,tr("IP地址错误")); return false; } return true; } 判断IP地址更简单的方式是: QRegExp rx2("^([1]?/d/d?|2[0-4]/d|25[0-5])/.([1]?/d/d?|2[0-4]/d|25[0-5])/.([1]?/d/d?|2[0-4]/d|25[0-5])/.([1]?/d/d?|2[0-4]/d|25[0-5])$") if( !rx2.exactMatch(ip) ) { QMessageBox::information(this,tr("ip地址错误")); return false; } return true; 判断文件名是否含有字母、数字、下划线之外的字符: bool IsRightFilename(QString filename) { QRegExp rx("[A-Za-z_0-9]+"); if( !rx.exactMatch( filename) ) { QMessageBox::information(this,tr("文件名含有其他字符或中文字符")); return false; } return true; } 使用正则表达式检验IP的合法性。转自:http://yleesun.blog.163.com/blog/static/29413402200952464324323/ 正则表达式:
QRegExp rx((2[0-4]//d|25[0-5]|[01]?//d//d?)//.){3}(2[0-4]//d|25[0-4]|[01]?//d//d?);
ipLabel = new QLabel(tr("IP Address:")); ipLineEdit = new QLineEdit; ipLabel->setBuddy(ipLineEdit); QValidator *validator = new QRegExpValidator(rx,this); ipLineEdit->setValidator(validator); ipLineEdit->setInputMask("000.000.000.000;");
实现框架下的验证输入的IP、子网掩码的合法性。(生成IP地址类)转自:
http://www.qtcn.org/bbs/simple/?t18020.html
//ip.h
#include <qwidget.h> #include <qstring.h> #include <qlineedit.h> #include <qvalidator.h> #define IP_H class IP : public QWidget { public: IP ( const QString & text,QWidget *parent,const char *name ); QString getValue(); private: QLineEdit * ip[4]; QIntValidator * ipv[4]; }; //ip.cpp #include <qwidget.h> #include <qlabel.h> #include <qfont.h> #include <qhbox.h> #include <qlineedit.h> #include "ip.h" IP::IP(const QString & text,const char *nombre) : QWidget(parent,nombre,0) { QFont *fuente = new QFont("Arial",14,QFont::Normal); fuente->setPixelSize(14); QLabel *label = new QLabel( this ); label->setFont(* fuente); label->setMinimumWidth(140); label->setMaximumWidth(140); QHBox * ipp = new QHBox((QWidget*) this); ipp->setMinimumWidth(140); ipp->setMaximumWidth(140); for (int i=0; i<4; i++) { ip= new QLineEdit((QWidget*) ipp,nombre); ip->setFont(* fuente); ip->setMinimumWidth(30); ip->setMaxLength(3); ipv= new QIntValidator(0,255,(QObject*)ipp); ip->setValidator(ipv); } label->move(0,0); ipp->move(150,0); label->setText(text); // ip->setInputMask("000.000.000.000; "); } QString IP::getValue() { bool flag = false; for (int i=0; i<4; i++) if ( ip->text().isEmpty() ) flag = true; if (flag) return QString("0.0.0.0"); else return QString(ip[0]->text()+ "." + ip[1]->text() + "." + ip[2]->text() + "." + ip[3]->text()); }
设置具有IP输入格式的输入框模式。转自:
http://www.qtcn.org/bbs/simple/?t28473.html
QRegExp rx("((2[0-4]//d|25[0-5]|[01]?//d//d?)//.){3}(2[0-4]//d|25[0-5]|[01]?//d//d?)"); QRegExpValidator v(rx,0); QLineEdit le; le.setValidator(&v); le.setInputMask("000.000.000.000;0");//只要加上;0保证有默认值即可使得正则和mask同时生效。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |