房號,幢正則

 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>

感受這是我寫過的最複雜的一個邏輯了,很完美,很浪費腦子,頭疼ingjavascript

 

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-3java

下面有作的就是將這裏封裝成一個函數,並返回對應的錯誤信息,很完美函數

 

還要考慮的狀況是判斷若是是1-9的話,第一位要小於第二位,而且,裏面的數字不能有重複的,太精彩了spa

 

 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>

這是最完美的格式,wonderfulcode

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

驗證房號的正則ip

 

var regExp = /^\d*((\.\d*)*)?$/;版本號正則,第一次遇到使用.的,官網的解釋是匹配除了\n以外的任意單個字符,不知道到底咋哪裏會使用到,先記下吧
相關文章
相關標籤/搜索