5-1创建语法
5-1-1 创建 RegExp 对象的语法(了解)
// var 变量 = new RegExp("正则表达式","匹配模式")var reg = new RegExp(/a/,"g");
5-1-2 使用字面量创建正则表达式
// var 变量 = /正则表达式/匹配模式var reg = /a/g
5-1-3 test()
用于检测正则表达式是否匹配字符串的一部分,返回boolean值**语法: reg.test(str)**
var reg =/abc/;var str = "abcdf";console.log(reg.test(str)); //true
5-2字符集
5-2-1 备选字符集
定义:规定某一位字符的备选字符列表
[ ] :规定的是某一位字符的备选字符列表特点:必须且只能多选一
var str ="上海,上天,上哪里去";var reg =/上[海天]/gconsole.log(str.replace(reg,"*"));
5-2-2 预定义字符集
定义:针对常用的备选字符集提供的简化符号
| \d | [0-9] |
|---|---|
| \w | [0-9a-zA-Z] 任意数字、字母、下划线 |
| \s | 空格 |
| . | 表示 所有字符 |
| [A-z] | 任意字母 |
| g | 全局过滤 |
| i | 忽略大小写 |
var str = "_ashdl8976hdjs"var reg = /\d/g;var reg2 = /\w/g;console.log(str.replace(reg,"*"));console.log(str.replace(reg2,"*"));
5-2-3转义字符
定义:遇到一些特殊的字符需要处理,可以在前面加上转义字符
在正则中 使用 \ 作为转义字符\. 表示 .\\ 表示 \\/ 表示 /
5-3量词
| * | 重复零次或多次 |
|---|---|
| + | 重复一次或更多次 |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n,} | 重复n次或者更多次 |
| {n,m} | 重复n到m次 |
5-3-1 代码
var pwd ="1233klshfjds" // 5-7位var reg = /[0-9]{5,7}/gvar reg2 = /[0-9]{4,}/gconsole.log(reg.test(pwd)); // falseconsole.log(reg2.test(pwd)) // true
5-3-2 贪婪模式和懒惰模式
// 给量词的情况下,默认取最大值,默认是贪婪的var str = '123123123hello'var reg = /\d{3,6}/console.log(str.replace(reg,'*')); //*123hello//test 只要正则表达式某一段满足则输出为trueconsole.log(reg.test(str)); //true
* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,
只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
// 懒惰模式 取最小值var str = "123123123hello"var reg = /\d{3,6}?/console.log(str.replace(reg,"*")); // *123123hello
5-4选择和分组
5-4-1 选择dd
var str = "你去哪里,他在..."var reg = /你去|他在/gconsole.log(str.replace(reg, "*"));
5-4-2 分组
var url1 = 'http://www.baidu.com'var url2 = 'https://www.baidu.com'var reg = /(http|https):\/\/www\.baidu\.com/;console.log(reg.test(url1)); //trueconsole.log(reg.test(url2)); //true
5-5指定匹配模式
^: 开头$: 结尾/* 严格匹配 ^reg$ */
5-5-1 严格模式^reg&
var phone = '02788667777'var reg = /^(027)?8\d{7}$/console.log(reg.test(phone)); //true
<input type="text" id="app"><script>/*** 电话号* ^(086)?1[3-9]\d{9}$*/var reg = /^(086)?1[3-9]\d{9}$/;$("#app").keyup(function (e) {if (e.keyCode == 13) {var value = $(this).val();console.log(reg.test(value));$(this).val("");}})</script>
5-5-2 去掉字符串前后的空格
// 字符串的方法: trim() 去除字符串前后的空格// 正则表达式: /^\s+|\s+$/g
var str = ' hello ';var reg = /(^\s+)|(\s+$)/gconsole.log(str.replace(reg,""));/
5-6非 ^
5-6-1 只获取字母
var str = "hello210874"// 只获取字母var reg = /[^a-z]/gconsole.log(str.replace(reg,""));
5-6-2 只获取数字
var str = "https://movie.douban.com/subject/1292052/"// 只获取数字var reg = /[^\d+]/gconsole.log(str.replace(reg,""));
5-6-3 过滤标签
var str = "<p>我是p标签</p><br><div>我是div</div>"var reg = /<[^<>]+>/gconsole.log(str.replace(reg,""));
案例
1.身份证验证
var reg=/^(42|35)\d{15}[\dx]$/var str="35022219990602201x";console.log(reg.test(str));
2.表单密码判断
var reg=/^[a-zA-Z]{6,}$/$("#app").keydown(function(e){if(e.keyCode==13){var value=$(this).val();console.log(reg.test(value));}})
3.邮箱验证
var reg=/^\w+@[a-z]+\.com$/$("#app").keydown(function(e){if(e.keyCode==13){var value= $(this).val();console.log(reg.test(value));}})
4.去除html标签
var str="<p>风扇呦西</p><br/><span>666</span>";var reg=/<[^<>]+>/gconsole.log(str.replace(reg,""));
5.根据地址获取数字数组对象(for循环)
var url="https://movie.douban.com/subject/1292052/";var reg=/[^0-9]/gvar arr=url.replace(reg,"");var test=[];for(var i=0;i<arr.length;i+=2){test.push(arr.slice(i,i+2));}console.log(test);
6.
var str="剧情,犯罪,月黑风高"var arr= str.split(",")var res=[];arr.forEach(name=>{name.name=name;res.push({name:name})})console.log(res);
7.遍历对象
var obj={top250:["你好666","他的666"],comingSoon:["防抖111","节流111"],thieaters:["放大镜222","防静电222"]}var arr=[];for(var i in obj){arr.push(...obj[i])}console.log(arr);var rgb=/[\d]/gvar res=[];arr.forEach(name=>{name=name.replace(rgb,"");res.push({name})console.log(name);})console.log(res);
8.
var str=`<span>9.7</span><span>-248人评价</span><br><span>9.7</span><span>-48人评价</span><br><span>9.6</span><span>-508人评价</span>`;var arr=str.split("<br>");var reg= /<[^<>]+>/g;var re1=/[^\d-/.]/g;// console.log(arr.replace(reg,""));var res=[];arr.forEach(item=>{item = item.replace(reg,"").trim().replace(re1,"").split("-");res.push({star:item[0],rating:item[1]})console.log(item);// console.log(item.trim());})console.log(res);
9.
var str=`[{"name":"李四666","data":[2019,10,11]},{"name":"王五666","data":[2019,10,11]},{"name":"赵六666","data":[2019,10,11]}]`var arr=JSON.parse(str);console.log(arr);var list=[];arr.forEach(item => {var {name,data}=item;name =name.replace(/\d/g,"")+"...";data =data.join("-")list.push({name,data})});console.log(list);
10.
var arr=[{name:"list"},{name:"html"},{name:"css"},{name:"vue"},{name:"vue"},{name:"html"},]var list=[];arr.forEach(item=>{var {name} =item;if(!list.includes(name)){list.push(name)}})
11.
var arr= {A:[{city:"武汉"},{city:"广州"}],B:[{city:"深圳"},{city:"广州"}],C:[{city:"上海"},{city:"武汉"}]}var list=[];for(var i in arr){console.log(arr[i]);list.push(...arr[i])}console.log(list);var res=[];list.forEach(item=>{var{city}=item;if(!res.includes(city)){res.push(city);}})console.log(res);
12.
var arr= {A:[{city:"武汉"},{city:"广州"}],B:[{city:"深圳"},{city:"广州"}],C:[{city:"上海"},{city:"武汉"}]}var list=[];var values=Object.values(arr);console.log(values);values.forEach(item => {item.forEach(f=>{var{city}=f;if(!item.includes(city)){list.push(city)}})});console.log(list);
