zoukankan      html  css  js  c++  java
  • 使用正则表达式限制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));
    
  • 相关阅读:
    单元测试,集成测试与系统测试
    关于 单窗口服务模型模拟 进行的小测试
    软件测试新随笔
    白盒测试
    黑盒测试小实验
    JUnit框架初次体验
    等价类划分进阶篇
    等价类划分
    因果图法测试小例
    android中将EditText改成不可编辑的状态
  • 原文地址:https://www.cnblogs.com/Doyoung/p/13519101.html
Copyright © 2011-2022 走看看