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) ;
    }

 




转载于:https://www.cnblogs.com/etwd/p/4916498.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值