正则1
0.常用正则:https://github.com/any86/any-rule
1.str.match(reg);//匹配返回类数组,失败null,由标识匹配结果
reg.exec(str);
g全局匹配
i不区分大小写
m换行匹配
y ES6新增匹配
2.reg.test(str);//返回boolean
reg规则对象为变量//推荐
1 var a='123'; 2 var str='yuge123'; 3 var reg=new RegExp(a);//扩展 var reg=new RegExp('yuge123','igm/变量') 若为正则,不需要引号字符串 4 alert(reg.test(str));//返回true
3.特殊意义字符需要转移'\': / \ ? + * ( ) [ ] | .
4.\n \r \t 字符串里也特殊
空格(\s) 非空格(\S)
数字(\d) 非数字(\D)
字符,即数字,字母,_(\w) 非字符(\W)
起始、结束、连词符除了\w之外都算连词符、空格(\b)等
1 var reg='/\babc\b/'; 2 var str='1pabc'; 3 alert(reg.test(str));//返回false,必须独立abc,eg:abc-、abc jiu、abc%jiu皆可;
5.量词
1 var reg=/1{100}/;//匹配100个连续的1,特殊{0,1}=>?, {1,}=>+, {0,}=>*
6.子集()
7.字符集[]
1 var reg=/[2-8]/;//或者:匹配2到8中任意一个。 2 //扩展:[0-9]、[a-z]、[A-Z]、[\u4e00-\u9fa5]汉字,语言自行百度; 3 //[0-9ab]匹配数字或a或b类似|,字符集内放特殊字符不用转义,若加上转义字符,又具有特殊意义,eg:[\d]匹配数字 4 //除了:放开头,匹配除了ab,a或b[^ab]
8.或 |
1 var reg=/a|bc/;//匹配a或者bc,配合子集,可匹配ac或bc /(a|b)c/;
9.注意点
1 var reg=/[abc]{3}/; 2 var str='cba'; 3 console.log(str.match(reg));//["cba", index: 0, input: "cba"]
1 var reg=/a^b/;//无意义,匹配不了,^在字符集外表示起始,/a^b/:起始为b,前面不能有a,除非/a?^b/
10.str.replace(reg/string,rep-thing/fn) 正则或者字符串替换为新字符串或fn
1 var reg=/abc/; 2 var str='yugeabc'; 3 var aS=str.replace(reg,'666'); 4 console.log(aS);//yuge666,替换后不改变str
1 var reg=/余歌(阿飞)(66)/; 2 var str='sss余歌阿飞66ppp'; 3 var nS=str.replace(reg,function(i,j,k){ 4 console.log(i+'---'+j+'---'+k);//余歌阿飞66---阿飞---66 5 })
11.str.search(reg) 类似indexOf,返回第一个匹配的位置,找不到-1
12.str.split(reg) 整体切割
13. .点在正则里代表任意字符
^在字符集之外,代表起始部分
$代表结束
14.惰性量词:?
1 var reg=/a{3,}?/; 2 var str='aaaaa'; 3 console.log(str.match(reg));//'aaa' 不加?变贪婪'aaaaa'
15.常用
1 var reg={ 2 qq:/^[1-9]\d{4,9}$/,//5到10位QQ 3 user:/^[a-zA-Z_]\w{5,17}$/,//6到18位用户名,起始非数字 4 pwd:/^([A-Z]|[a-z]|[0-9]|[`-=[];,./~!@#$%^*()_+}{:?]){6,20}$/,//密码百度吧 5 tel:/^1[3-8]\d{9}$/,//11位手机号 6 mail:/^[1-9a-z_]\w{5,17}@[\da-z]{2,}(\.[a-z]{2,4}){1,2}$/i,//邮箱 6 IDCard:/[1-9]\d{16}[\dx]/i //身份证号 7 }

浙公网安备 33010602011771号