一、String中的正则API
1.search();判断是否包含符合规定的关键词
//如果找到返回关键词的位置,如果找不到返回-1
var str='you can you up';
//var strs=str.search(/you/);//返回关键词的位置
var strs=str.search(/uoy/);//找不到返回-1
console.log(strs);
缺点:
1.search只能找第一个关键词出现的位置
2.search只能获得位置,不能获得内容
2. match(/正则/);获得所有和正则匹配的关键词
返回一个包含关键词的数组
如果没有找到返回null
var str='good good study,day day up';
var strs=str.match(/d/g);
console.log(strs);
注:所有正则表达式默认只匹配一个关键词,若要匹配所有要在第二个/后面加g,若要忽略大小写要在第二个/后面加i
缺点:
无法获取每个关键词的位置
g:表示查找全部,不写仅查找一个
i:表示忽略大小写。不写,区分大小写
4.replace(/正则/,'替换值');
var str='no zuo no die';
var strs=str.replace(/no/ig,'*');
console.log(strs);
5.split(/正则/);切割 //切割完返回一个数组
var str='no,zuo,no,die';
var strs=str.split(/,/);
console.log(strs);
正则
一位数字\d===[0-9]
一位数字字母下划线\w===[0-9A-Za-z_]
一位空格tab键 \s
量词:规定出现的数量(次数)
有明确数量限制
用{m,n}表示最多出现m次,最少出现n次
{m,}表示最小出现m次,最多不限
{m}表示必须出现m次
没有明确限制
?可有可无 最多一次
*可有可无 多了不限
+至少一次 最多一次
分组或选择
()表示分组
|表示或者
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);
练习
获取输入框和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='用户名格式错误,请重新输入';
}
}
身份证号正则
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);