正则表达式
reg = /匹配规则/
reg.test(str)
1.边界符:^ 以...开头,$ 以...结尾
2.量词:* 出现0次或多次,+ 出现1次或多次, ? 出现0次或1次,{n}出现n次,{n,m}出现n到m次
3.字符类:[]中的字符任一出现,就是true,如果出现多个,加量词。
如:[abc]{n,}
如果在[]里面加^,表示取反
. 匹配除换行符以外的任一单个字符
\w 匹配数字、字母、下划线;\s匹配空格
案例:匹配输入是否符合xxx-xxx-xxx,x为数字
<body>
<input type="text" />
<script>
let telnum = document.querySelector('input')
let = reg = /^\d{3}-\d{3}-\d{3}$/
telnum.addEventListener('blur', function () {
console.log(reg.test(telnum.value));
})
</script>
</body>
或者
function matchPatter(str) {
let reg = /^[0-9]{3}-[0-9]{3}-[0-9]{3}$/
return reg.test(str)
}
console.log(matchPatter('111-111-222'));
console.log(matchPatter('111'));
RGB转换成16进制
// rgb是0-255的三个数字rgb(233,167,32) 10进制的
// 以rgb开头
function rgb216(rgbcolor) {
// ()括起来的是一个元字符整体
let reg = /^(rgb|rgba|RGB|RGBA)\(\d{1,3},\d{1,3},\d{1,3}(,([.\d]+))?\)/
// 把前面的rgb换成空,然后数字转换成数组
if (reg.test(rgbcolor)) {
// 符合转换为16进制 去掉rgb和左右括号 转数字转换成数组
rsa = rgbcolor.replace(/(\(|\)|rgba|rgb|RGBA|RGB)*/g, '').split(',')
console.log(rsa);
r = (+rsa[0]).toString(16);//先强制转陈数字,再转成16进制
// 如果16进制长度是1位 就要前面加0
r = r.length == 1 ? '0' + r : r;
g = (+rsa[1]).toString(16);
g = g.length == 1 ? '0' + g : g;
b = (+rsa[2]).toString(16);
b = b.length == 1 ? '0' + b : b;
// 透明度 有就取有的值 没有就是默认为1
a = (+(rsa[3] ? rsa[3] : 1)) * 100;
let hex = '#' + r + g + b
console.log("hex:", hex, a);
return hex
// return { hex: '#' + r + g + b, r: parseInt(r, 16), g: parseInt(g, 16), b: parseInt(b, 16), alpha: Math.ceil(a) };
} else {
// 不符合直接返回输入
console.log("不符合规范", rgbcolor);
return rgbcolor
}
}
rgb216('rgb(155,10,20)')
16进制转RGB
function hex2rgb(hexcolor) {
// 16进制的0-9或a-f的形式
let reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/
if (reg.test(hexcolor)) {
console.log(111);
// 判断长度 如果是4,就是单个数为16进制 #fff
let rgb = 'rgb('
if (hexcolor.length === 4) {
for (let i = 1; i < 4; i++) {
rgb += parseInt(hexcolor.slice(i, i + 1), 16) + (i < 3 ? ',' : '')
}
// 最后一个逗号换成)
rgb += ')'
console.log(rgb);
}
if (hexcolor.length === 7) {
for (let i = 1; i < 7; i = i + 2) {
rgb += parseInt(hexcolor.slice(i, i + 2), 16) + (i < 4 ? ',' : '')
}
// 最后一个逗号换成)
rgb += ')'
console.log(rgb);
}
} else {
console.log("不符合16进制");
}
}
hex2rgb('#f2f2f2')