zoukankan      html  css  js  c++  java
  • QT 正则表达式无效

    背景:写了一个判断IP地址合法的正则表达式,并让它应用在输入框中

    代码如下

        QRegExp rx_ip("^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
        class QValidator * validatorIP = new QRegExpValidator(rx_ip, this);
        uiform.lineEdit->setValidator(validatorIP);
        uiform.lineEdit->setInputMask("000.000.000.000;");
        uiform.lineEdit->setText(str_IP);

    实际输入时,发现可以输入999.999.999.999,相当于正则表达式无效,只有

    uiform.lineEdit->setInputMask("000.000.000.000;");生效

    通过分析,可能是正则表达式与setInputMask之间不一致的问题导致的,如正则表达式可以有四位都是1位数的情况等。

    因此只能在实现进行二选一,要么用正式表达式要么用setInputMask,第三种方式就是先用setInputMask设置输入格式,然后进行连接时加一个IP有效性的判断,如下:

            //正则表达式判断
        QRegExp rx_ip("^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
        bool match = rx_ip.exactMatch(uiform.lineEdit->text());
        if (!match)
        {
            QMessageBox:: critical(NULL, QStringLiteral("错误"), QStringLiteral("请输入正确的IP地址及端口号"),QMessageBox:: Yes , QMessageBox:: Yes) ;
        }



  • 相关阅读:
    extract numberic from text
    str.rfind("//")
    solr入门心得
    深挖洞,广积粮,缓称王
    ubuntu 查看文件夹大小

    关于托运
    iconv转换文件编码
    小毛小毛你的心态
    广积粮,高筑墙,缓称王
  • 原文地址:https://www.cnblogs.com/etwd/p/4916498.html
Copyright © 2011-2022 走看看