项目bug乱飞,终于逐个要制服了,记录下中间学到的东西,也算慰藉下这么优秀的自己
今天会话不多说了,记录完了抽烟庆祝去,
背景:需求前段传入参数要做限制,要求是1-12月分的正整数,和1-48周的正整数,没的说当然是正则表达式了,作为一个几年都是代码搬运工的俺来讲,度娘不知道的就得靠自己了,
捡起来吧,都忘个差不多了,先上案例吧:
内容: count =$('#month').val();
//var regstr = /^(1[0-2]|[1-9])$/;
var regstr = /^(?:1[0-2]|[1-9])$/;
if(!regstr.test(count)) {
U.msg("请输入1-12正整数");
return false;
}
其实懂了还是挺简单的,就是计算的时候烧脑细胞,意思是,/....../ 表示一个模式(正则表达式)的开始和结束,^ 表示要开始匹配验证字符串了,()表示你想要的结果的一个整体,
(?:a|b) 官方点儿的解释就是:匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。一般是很晦涩难懂的, 咱们来点儿易懂的解释:就是一个if判断而已,就是(?:这么牛|牛)
”就是一个比“就是这么牛|就是牛
”更简略的表达式而已,其中| 这个符号表示'或',
好了字符都看懂了,接下来就简单了,正则要开始了,要么是1是第一位数,0-2是第二位数的两位数字,要么就是1-9的一位数字,对,你理解没错,这就是1-12的正整数表达式了,就是这么简单,当然有很多写法,这个是最简单理解的写法,
note:正整数包括两种情况,一种是包括小数的,一种是不包括小数的,这里是包括小数的,
再来一发 举一反三:想要得到1-48的正整数怎么办呢?
还是沿着咱们上面的思路来想,分为三部:单数.双数.整十
单数就是[1-9]
双数中的整十就是[1-3][0-9]
剩下的就是40-48了4[0-8]
分割好了以后就差怎么整合在一起了
count =$('#week').val();
var regstr = /^(?:[1-9]|([1-3][0-9])?|4[0-8])$/;
if(!regstr.test(count)) {
U.msg("请输入1-48正整数");
return false;
}
没错 你这次看懂了吧 哎不对中间怎么多了个问号,说明你很细心,这个?的意思是说匹配的时候匹配前面的字符一次或者o次,作用等同与{0,}
纯属个人理解,如有错误,欢迎指出