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


     

    判断合法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同时生效。
  • 相关阅读:
    CodeForces Round #678(Div2) E.Complicated Computations Mex性质,权值线段树
    P6075 子集选取 思维
    HDU-4747 Mex 线段树应用 Mex性质
    P1273 有线电视网 树形DP 树上背包
    P6786 GCDs & LCMs 数学推导
    [CTSC1997] 选课 树上背包
    Gym-101915K Poor Ramzi 区间DP
    [MdOI R2] Odyssey 拓扑排序上DP
    CodeForces Div3.F
    二分-B
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4353112.html
Copyright © 2020-2023  润新知