zoukankan      html  css  js  c++  java
  • 正则表达式限定位数的正数

    今天项目上碰到一个正则表达式的需求,需要限定整数位数为不超过7位的正数,可能包含一位小数位或者只能是正数,正则表达式的写法最重要的是思路的实现,在网上并没有找到很好的解决办法,首先是正数必须大于0,其次整数位也限定了7位,小数位如果有的话也只能一位,碰到这样的正则表达式最好是拆解成三部分:

    1、整数位为7位+小数位为1位的验证 (^[0-9]{1,7}\.([0-9]{1})$)
    
    2、整数为7位不包含小数位的非负数 (^[0-9]{1,7}$)
    
    3、大于0的正数 (^\d*[1-9]\d*$)

    拆解后可以看到,3式需要和2式进行逻辑与,合并后再与1进行逻辑或运算,故可以推到出:

    (?=^\d*[1-9]\d*$)(^[0-9]{1,7}$)|(^[0-9]{1,7}\.([0-9]{1})$)

    其中:“|”为逻辑或,而逻辑与可以写成(?=A)(B),A和B分别为两个正则表达式。

    写个性化的正则表达式需要有一个较好的思路,如何拆解和组合很重要,不太建议采用逻辑非,实现起来不易,逻辑与和逻辑或是比较好的实现方式。

    可参考一篇博客:正则表达式全部符号解释

  • 相关阅读:
    数据结构上机思考
    hdu1005,循环节
    网络赛总结
    icpc沈阳网络赛。cake cake!
    树的基础代码
    网络赛第一场
    欧拉函数
    欧拉函数
    多校第十场
    (环上)最大子段和
  • 原文地址:https://www.cnblogs.com/tison/p/7835343.html
Copyright © 2011-2022 走看看