• 使用正则表达式限制QLineEdit不能输入大于某个整数


    使用正则表达式限制QLineEdit不能输入大于某个整数,即:使用正则表达式,匹配不大于某个整数

    举例:匹配不大于4567

    * 原理分析:

    • 匹配不大于4567这个数,所以第一个想到的是只要小于4567就都匹配,小于4567不能直接匹配,但是可以匹配小于四位数的整数,也就是说只要是三位数就都可以匹配,那大于四位数的当然是完全不匹配了,正则表达式可以写做:
    [0-9]
    [0-9][0-9]
    [0-9][0-9][0-9]
    
    • 现在就只剩下四位数,四位数就需要细分了,首先从它的千位也就是第一位看起,不大于4567,那么第一位当然是不能大于4,所以只要第一位不大于4 的整数就都匹配,正则表达式写做:
    [0-3][0-9][0-9][0-9]
    
    • 四位数的第一位解决了,那么就是第二位数了,第二位数不大于5,但是前提是前面的第一位数正好是4,所以第一位正好是4、第二位不大于5,后两位无论是什么都匹配,正则表达式写做:
    4[0-4][0-9][0-9]
    
    • 以此类推,第三位不大于6,第四位不大于7,正则表达式分别写做:
    45[0-6][0-9]
    456[0-7]
    
    • 最后一种情况:正好是4567,正则表达式直接写做:
    4567
    

    组装

    现有多个匹配条件,需要使用符号|连接多个条件,所以综上条件,正则表达式写做:

    [0-9]|[0-9][0-9]|[0-9][0-9][0-9]|[0-3][0-9][0-9][0-9]|4[0-4][0-9][0-9]|45[0-6][0-9]|456[0-7]|4567
    

    可以看得出,上面的写法非常冗余,现在将上面的写法稍做简化,写法如下:

    d|d{0,2}|d{0,3}|[0-3]d{0,3}|4[0-4]d{0,2}|45[0-6]d|456[0-7]|4567
    

    QLineEdit限制输入代码

    /* ^ 和 $ 表示正则表达式的起始和截止位置
     * d 匹配任意数字
     * {0,2} 重复0-2次,包括0和2
     * 为避免d被转义,需要先转义,所以是两个
     */
    QRegExp rx("^\d|\d{0,2}|\d{0,3}|[0-3]\d{0,3}|4[0-4]\d{0,2}|45[0-6]\d|456[0-7]|4567$");  // 匹配小于4567
    
    QLineEdit * edit = new QLineEdit(this);
    edit->setValidator(new QRegExpValidator(rx,this));
    
  • 相关阅读:
    java语法基础(总结)
    ZookeeperclientAPI之创建会话(六)
    对A轮的追逐变得越加狂热,当前距离互联网泡沫到底有多近?
    Java集合(一):Java集合概述
    深入了解Cookie(1)------selenium2进行Cookie操作的前奏
    Cocos2d-X开发中国象棋《九》走棋规则
    java中request,application,session三个域及参数简单示例
    在多浏览器使用JS复制内容到剪切板,无需插件
    初学structs2,结果类型简单示例
    使用servletAPI三种方式简单示例
  • 原文地址:https://www.cnblogs.com/Doyoung/p/13519101.html
Copyright © 2020-2023  润新知