一、正则
(1)预定义字符集
一位数字\d===[0-9]
一位数字字母下划线\w===[0-9A-Za-z_]
一位空格tab键 \s
(2)量词:规定出现的数量(次数)
有明确数量限制
用{m,n}表示最多出现m次,最少出现n次
{m,}表示最小出现m次,最多不限
{m}表示必须出现m次
没有明确限制
?可有可无 最多一次
*可有可无 多了不限
+至少一次 最多一次
(3)分组或选择
( )表示分组
|表示或者
var wrt=prompt('请输入...');
//可以包含数字字母下划线 6-12位
var reg=/^\w{6-12}$/;
var result=reg.test(wrt);
console.log(result);
string中的正则API
1.search(/正则/);查找一个关键字所在的位置
找不到返回-1
找到的是关键字的位置,找不到内容
var str='you can you up';
var reg=str.search(/you/);
console.log(reg);
2.match(/正则/); 获得所有和正则匹配的关键词 输出在数组
g表示输出所有和正则匹配的关键词
i表示忽略大小写
var str='good gooD study,day day up';
var num=str.match(/d/ig);
console.log(num);
3.replace(/正则/,'替换值');
var str='no zuo No die';
var num=str.replace(/no/ig,'**');
console.log(num);
4.split(/正则/); 切割 切割完变成数组
var str='no,zuo,no,die';
var num=str.split(/,/);
console.log(num);
案例:
(1)获取输入框和span
var input=document.querySelector('input');
var span=document.querySelector('span');
input.onblur=function(){
var reg=/^[0-9A-Za-z_]{6,12}$/;
var result=reg.test(input.value);
if(result){
span.innerHTML='用户名格式正确';
}else{
span.innerHTML='用户名格式错误,请重新输入';
}
}
(2)身份证号正则
var wrt=prompt('请输入您的身份证号');
var reg=/^\w{17}[0-9xX]$/;
var result=reg.test(wrt);
console.log(result);
手机号码正则
var wrt=prompt('请输入你的手机号');
var reg=/^(0086|86)?\s*1[356789]\d{9}$/;
var result=reg.test(wrt);
console.log(result);
获得焦点事件:onfocu
失去焦点事件:onblur