正则小练习
16进制颜色
分析
- example:
#FFF,#2E3371,#aaffbb,#236542
- sign:
用数字0到9和字母A到F(或a~f)表示
- note:
组合序列可出现3次或6次
var regex=/#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g
var str="#FFF,#2E3371,#aaffbb,#236542";
console.log(str.match(regex)) // ["#FFF", "#2E3371", "#aaffbb", "#236542"]
24小时
分析
- example:
23:59 01:24 13:14 05:21
- sign:
前提:第一位数字有效取值为/[0-2]/
if(第一位数字===2){
第二位数字取值为/[0-3]/
}else{
第二位数字取值为/[0-9]/
}
第三位数字 为[0-5]
第四位数字 为[0-9]
var regex= /^([01][0-9]|[2][0-3]):[0-5][0-9]$/
var time1="23:59";
var time2="01:24";
var time3="13:14";
var time4="05:21";
regex.test(time1)//true
regex.test(time2)//true
regex.test(time3)//true
regex.test(time4)//true
年月日(YYYYMMDD)
分析
- example:
20191124 19971031 19980726
- sign
* 四位数年份 [0-9]{4}
* 两位数月份
if(当前月份>=10){
regex=/[1][0-2]/
}else{
regex=/0[1-9]/
}
* 两位数日
if(当前日<10){
regex=/0[1-9]/
}else {
if(当前日>=30){
regex=/3[01]/
}else{
regex=/[12][0-9]/
}
}
var regex = /^[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$/;
console.log(regex.test("20191124"),regex.test("19971031"),regex.test("19980726"));//true true true