vue中对el-input输入的内容进行正则判断,两个字符中间有分隔符验证,楼层输入格式修改正则转换,判断前后字符之间,使用的是否为、:|/-如果不是则会取消

时间:2025-02-14 21:35:24
//直接在需要的地方加入这个方法,可以使用el-inpu的change事件 houseDataLc(value){ // "(^(([1-9]+|-[1-9]+)(-|:|:|([\|]{1,})|、|/)([[1-9]*|-[1-9]+))$)" //这是和下面差不多正则,但是就是有一点点的问题,没有改好 if(!this.houseData.zlc){ this.$set(this.houseData,'lc','') return this.$message('请先输入总楼层'); } // var reg = new RegExp("^-?(([1-9]\d* (:|:|([\|]{1,})|-|、|/)-?[1-9]\d*)|([1-9]\d*))$"); //正则这样的时候基本可以用,但是这样使用出现了正则不能正确判断的情况,改为的下面那种,有大佬看了可以告诉下为什么吗 //下面一行判断是因为正则多个转义符或显示有问题,就取消了下面一行的检验 // eslint-disable-next-line var reg = /^-?(([1-9]\d*(\:|\:|\||\-|\、|\/)-?[1-9]\d*)|([1-9]\d*))$/; if(value%1 === 0){ +this.houseData.zlc >= value? this.$set(this.houseData,'lc',value):this.$set(this.houseData,'lc','') //这里是用来判断是否是存数字的 return false //下面是对各种情况做判断,因为-可能为负楼层,可能为中间的分隔符,所以判断比较多,放最后 }else if(reg.test(value) &&this.houseData.zlc){ if(value.split(':').length === 2){ +value.split(':')[0] < +value.split(':')[1]? +this.houseData.zlc >= +value.split(':')[1]? this.$set(this.houseData,'lc',value):this.$set(this.houseData,'lc',''):this.$set(this.houseData,'lc','') return false } if(value.split(':').length === 2){ +value.split(':')[0] < +value.split(':')[1]? +this.houseData.zlc >= +value.split(':')[1]? this.$set(this.houseData,'lc',value):this.$set(this.houseData,'lc',''):this.$set(this.houseData,'lc','') return false } if(value.split('/').length === 2){ +value.split('/')[0] < +value.split('/')[1]? +this.houseData.zlc >= +value.split('/')[1]? this.$set(this.houseData,'lc',value):this.$set(this.houseData,'lc',''):this.$set(this.houseData,'lc','') return false } if(value.split('|').length === 2){ +value.split('|')[0] < +value.split('|')[1]? +this.houseData.zlc >= +value.split('|')[1]? this.$set(this.houseData,'lc',value):this.$set(this.houseData,'lc',''):this.$set(this.houseData,'lc','') return false } if(value.split('-').length === 2){ +value.split('-')[0] < +value.split('-')[1]? +this.houseData.zlc >= +value.split('-')[1]? this.$set(this.houseData,'lc',value):this.$set(this.houseData,'lc',''):this.$set(this.houseData,'lc','') return false } if(value.split('-').length === 3){ // ('-')[1] === ''?this.$set(,'lc',''):this.$set(,'lc',value) // (('-')); +value.split('-')[1] === ''? +this.$set(this.houseData,'lc',''): +this.houseData.zlc >= +value.split('-')[2]?this.$set(this.houseData,'lc',value):this.$set(this.houseData,'lc','') return false } if(value.split('-').length === 4){ -value.split('-')[2]< -value.split('-')[4]?+this.houseData.zlc >= +value.split('-')[4]?this.$set(this.houseData,'lc',value):this.$set(this.houseData,'lc',''):this.$set(this.houseData,'lc','') return false } }else{ this.$message('请输入正确的格式'); this.$set(this.houseData,'lc','') } },