1.备选字符集—规定某一位字符的备选字符列表
/* 上海,上天,上去 --替换成** */
/* 备选字符集:规定某一位字符的备选字符列表
特点:多选一
*/
var reg=/上[海,天,去]/g
var str="我要去上海,我要上去东方明珠,去上天";
console.log(str.replace(reg,"**")) //我要去**,我要**东方明珠,去**
例题
/*eg: 中国人民共和国成立了,中共很厉害,大中华厉害
中国,中共,中华 --替换成666
*/
var reg=/中[国,共,华]/g;
var str="中国人民共和国成立了,中共很厉害,大中华厉害"
console.log(str.replace(reg,"666"))
2.连号的备选字符集
/* 连号的备选字符集
[0-9]
[a-z]
[a-zA-Z]
*/
var str="2514675gjimgsdWEHOD";
var reg=/[0-9]/g;
console.log(str.replace(reg,"*")) //*******gjimgsdWEHOD
console.log(str.replace(/[a-z]/g,"*")) //2514675*******WEHOD
console.log(str.replace(/[a-z]/ig,"*")) //2514675************
console.log(str.replace(/[a-zA-Z]/g,"*")) //2514675************
3.预定义字符集
\d:[0-9]数字 \w:[0-9a-zA-Z_]数字字母下划线 i:区分大小写 g:全局匹配
\s:一位空字符:空格、tab、换行 . —除了换行符以外所有的字符
/* 预定义字符集:针对常用的备选字符集提供的简化符号
[0-9] \d
[0-9a-zA-Z_] \w
空格 \s
. --除了换行符以外所有的字符
*/
var reg=/\d/g;
var str="25679difjdDEGHYE_";
var t="hello world"
console.log(str.replace(reg,"**")) //**********difjdDEGHYE_
console.log(str.replace(/\w/g,"**")) //**********************************
console.log(t.replace(/\s/g,"**")) //hello********world
console.log(str.replace(/./g,"*")) //*****************
4.量词—定字符集出现的次数
4.1确定数量
test()—只要满足设定的条件就返回true,不管给的数据是否大于条件
/* 量词就是规定某一m位字符出现的次数
{m} --至少m次
{m,n} --最少m次,可以是n次以上,只要是有n个就为true
{m,} m --3次及3次以上
*/
var reg=/\d{3,}/
var str="14563ddges";
console.log(reg.test(str)) //true
var reg=/\d{3}/
var str="1443ddges";
console.log(reg.test(str)) //true
var reg=/\d{3,6}/
var s="1445856ddges";
console.log(reg.test(s)) //true 3次及6次以上
replace()—只截取满足条件的一段
/*
{m} --至少m次
{m,n} --最少m次,最多n次
{m,} --m次及m次以上
*/
/* 三个数字+天
123天
4324254天
*/
var reg=/\d{3}天/g;
var reg=/\d{3,4}天/g;
var p="2451天地金额少了附件432天";
console.log(p.replace(reg,"**")) //2**地金额少了附件**
var reg=/\d{3,4}天/g;
var p="2451453天地金额少了附件432天";
console.log(p.replace(reg,"**")) //**地金额少了附件**
4.2不确定数量
test() 方法用于检测正则表达式是否匹配字符串的一部分,返回boolean值
/*
+ 1个,或1个以上 m>=1 {1}
* 0个或多个 m>=0 {0,}
? 0,1 {0,1}
*/
var reg=/\d?/;
var str="124edehsd";
console.log(reg.test(str)) //true
5.贪婪模式和非贪婪模式
5.1贪婪模式—正则表达式默认是贪婪的,会获取满足条件最大值
var str="18945eghe";
var reg=/\d{3,6}/;
console.log(str.replace(reg,"*")) //*eghe 取6个
5.2非贪婪模式—量词后面加?—会获取满足条件的最小值
var str="18945eghe";
var reg=/\d{3,6}?/;
console.log(str.replace(reg,"*")) //*45eghe 取3个
6.匹配位置
/*
^ 以什么开头,
$ 以什么结尾
trim(); --去除前后的空格 reg=/^\s+|\s$/g
*/
何时使用:只要验证时,必须前加^,后加$!
//匹配字符串开头的所有空字符 ^\s+
//匹配字符串结尾的所有空字符 \s+$
var str=" hello world";
var s="hello ";
var t=" hello world "
var reg=/^\s+/; //以空格开头就将它用*替换掉
console.log(str.replace(reg,"*")) //*hello world
var s="hello ";
var r=/\s+$/;
console.log(s.replace(r,"*")) //hello*
console.log(t.replace(/^\s+|\s$/g,"*")) //*hello world *
7.选择和分组
//选择
| 读作"或"
//分组
()
//转义字符\ 转义字符后面的不会被参与运算,只是一个符号
var a ="hello\"";
console.log(a); //hello"
手机号:+86或0086 可有可无,最多1个
空字符 不限制个数
1
3,4,5,7,8 选其一
9位数字
(\+86|0086)?\s*1[34578]\d{9} //+86的+就要用到转义符
8.排除
//除了abc
[^abc]