zoukankan      html  css  js  c++  java
  • 房号,幢正则

     1 <script type="text/javascript">
     2 
     3         var lastState = false;
     4 
     5         var regExp = /^[1-9]d*((-[1-9]d*,[1-9]d*)*-[1-9]d*)?$/;
     6         var str = "1-9,2-10";
     7         if(regExp.test(str)){
     8             var newStr = str.split(',')
     9             var newArr = [];
    10             for(var i = 0; i < newStr.length;i++){
    11                 var littleStr = newStr[i].split('-');
    12                 if(littleStr[0] >= littleStr[1]){
    13                     console.log('第一位比第二位长')
    14                     lastState = false;
    15                     break;
    16                 }
    17                 else{
    18                     var len = littleStr[1] - littleStr[0] + 1;
    19                     for(var j= 0;j<len;j++){
    20                         newArr.push(littleStr[0]);
    21                         littleStr[0]++;
    22                     }
    23                     lastState = true;
    24                 }
    25             }
    26             if(lastState){
    27                 var newLen = newArr.length;
    28                 var lastArr = newArr.sort()
    29                 for(var i = 0;i<newLen;i++){
    30                     if(lastArr[i] == lastArr[i+1]){
    31                         console.log('有交集')
    32                         lastState = false;
    33                         break;
    34                     }
    35                     lastState = true;
    36                 }
    37             }
    38             
    39         }
    40         else{
    41             console.log('正则匹配没过')
    42         }
    43         console.log(lastState)
    44 
    45     </script>

    感觉这是我写过的最复杂的一个逻辑了,很完美,很浪费脑子,头疼ing

    1 /^([1-9]d*|[1-9]d*-[1-9]d*)(,([1-9]d*|[1-9]d*-[1-9]d*))*([1-9]d*)?$/

    这是一个最完美的正则,考虑到的情况有1,2,3    1,2-3,4-5,6   1-2,3-4,5-6   1  1-3

    下面有做的就是将这里封装成一个函数,并返回对应的错误信息,很完美

    还要考虑的情况是判断如果是1-9的话,第一位要小于第二位,并且,里面的数字不能有重复的,太精彩了

     1     <script type="text/javascript">
     2     var val = "1-2,3";
     3     console.log(zhuangCheck(val))
     4 
     5     function zhuangCheck(val) {
     6         var exp = /^([1-9]d*|[1-9]d*-[1-9]d*)(,([1-9]d*|[1-9]d*-[1-9]d*))*([1-9]d*)?$/
     7         if (exp.test(val)) {
     8             var arr = val.split(',');
     9             var arrLen = arr.length;
    10             var newArr = [];
    11             var flag = true,
    12                 msg = '';
    13             for (var i = 0; i < arrLen; i++) {
    14                 if (arr[i].indexOf('-') != -1) {
    15                     var littleArr = arr[i].split('-');
    16                     if (Number(littleArr[0]) >= Number(littleArr[1])) {
    17                         flag = false;
    18                         msg = '第一位不能大于第二位';
    19                         break;
    20                     } else {
    21                         var newLen = littleArr[1] - littleArr[0] + 1;
    22                         for (var j = 0; j < newLen; j++) {
    23                             newArr.push(Number(littleArr[0]))
    24                             littleArr[0]++;
    25                         }
    26                     }
    27 
    28                 } else {
    29                     newArr.push(Number(arr[i]))
    30                 }
    31             }
    32             if (flag) {
    33                 var sortArr = newArr.sort();
    34                 var sortLen = sortArr.length;
    35                 for (var i = 0; i < sortLen; i++) {
    36                     if (sortArr[i] == sortArr[i + 1]) {
    37                         msg = '有重复'
    38                         break;
    39                     }
    40                 }
    41             }
    42         } else {
    43             msg = '清填写正确的格式'
    44         }
    45         return msg;
    46     }
    47     </script>

    这是最完美的格式,wonderful

    var regExp = /^[1-9]d*([1-9]d|d[1-9])$/

    验证房号的正则

    var regExp = /^d*((.d*)*)?$/;
    版本号正则,第一次遇到使用.的,官网的解释是匹配除了 之外的任意单个字符,不知道到底咋哪里会使用到,先记下吧
  • 相关阅读:
    1111---9999的变换
    Mac命令行
    iOS 支付 [支付宝、银联、微信]
    ShareSDK适配iOS 9系统
    iOS中Size Classes的理解与使用
    iOS9网络请求升级 之前的不显示图片 破解方法
    iOS9中友盟分享不能使用 破解方法
    iOS9中错误信息信息是引入的一个第三方库不包含bitcode
    iOS 六大手势
    下拉刷新和上拉加载的原理
  • 原文地址:https://www.cnblogs.com/wrestle-mania/p/6934513.html
Copyright © 2011-2022 走看看