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 =/上[海天]/g
console.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}/g
var reg2 = /[0-9]{4,}/g
console.log(reg.test(pwd)); // false
console.log(reg2.test(pwd)) // true
5-3-2 贪婪模式和懒惰模式
// 给量词的情况下,默认取最大值,默认是贪婪的
var str = '123123123hello'
var reg = /\d{3,6}/
console.log(str.replace(reg,'*')); //*123hello
//test 只要正则表达式某一段满足则输出为true
console.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 = /你去|他在/g
console.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)); //true
console.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+$)/g
console.log(str.replace(reg,""));
/
5-6非 ^
5-6-1 只获取字母
var str = "hello210874"
// 只获取字母
var reg = /[^a-z]/g
console.log(str.replace(reg,""));
5-6-2 只获取数字
var str = "https://movie.douban.com/subject/1292052/"
// 只获取数字
var reg = /[^\d+]/g
console.log(str.replace(reg,""));
5-6-3 过滤标签
var str = "<p>我是p标签</p><br><div>我是div</div>"
var reg = /<[^<>]+>/g
console.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=/<[^<>]+>/g
console.log(str.replace(reg,""));
5.根据地址获取数字数组对象(for循环)
var url="https://movie.douban.com/subject/1292052/";
var reg=/[^0-9]/g
var 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]/g
var 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);