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

QT正则表达式---针对IP地址 .

2013-07-04 16:52 239 查看
首先小例:转自http://blog.csdn.net/vah101/archive/2010/12/08/6063180.aspx

判断合法IP的QT正则表达式:

bool IsIPaddress(QString ip)

{

QRegExp rx2("(//d+)(//.)(//d+)(//.)(//d+)(//.)(//d +)");

int pos = rx2.indexIn(ip);

if(pos>-1)

{

for(int i=0;i<4;i++)

{

if( rx2.cap(i*2+1).toInt()>=255 )

{

QMessageBox::information(this, tr("错误"), tr("IP地址错误"));

return false;

}

}

if(rx2.cap(7).toInt()==0)

{

QMessageBox::information(this, tr("错误"), tr("IP地址错误"));

return false;

}

if(rx2.cap(7).toInt()==0)

{

QMessageBox::information(this, tr("错误"), tr("IP地址错误"));

return false;

}

}

else

{

QMessageBox::information(this, tr("错误"), 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("错误"), 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("错误"), 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, QWidget *parent, 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同时生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: