房号,幢正则
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*)*)?$/;
版本号正则,第一次遇到使用.的,官网的解释是匹配除了\n之外的任意单个字符,不知道到底咋哪里会使用到,先记下吧