官网:https://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
[0-9][a-z][A-Z][0-9a-z][a-zA-Z][0-9a-zA-Z]\d //[0-9]\w //[0-9a-zA-Z_]/i代表不分大小写/g代表全局
一、备选字符集
1.备选字符集—规定某一位字符的备选字符列表
备选字符集:规定某一位字符的备选字符列表
特点:多选一;
两种方法: 1、 var reg = /上[海,天,去]/g;
2、 var reg = /上海|上去|上天/g;
/* 上海,上天,上去 --替换成** */var reg=/上[海,天,去]/gvar 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,"*")) //*******gjimgsdWEHODconsole.log(str.replace(/[a-z]/g,"*")) //2514675*******WEHODconsole.log(str.replace(/[a-z]/ig,"*")) //2514675************console.log(str.replace(/[a-zA-Z]/g,"*")) //2514675************
二、预定义字符集
预定义字符集:针对常用的备选字符集提供的简化符号
1、. 除换行符以外的所有的字符
2、 \d [0-9]
3、\w [0-9a-zA-Z_]
4、\s 空格、tab、换行 . —除了换行符以外所有的字符
2.1 \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********worldconsole.log(str.replace(/./g,"*")) //*****************
2.2 匹配位置 ^ $
/*^ 以什么开头,$ 以什么结尾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 worldvar s="hello ";var r=/\s+$/;console.log(s.replace(r,"*")) //hello*console.log(t.replace(/^\s+|\s$/g,"*")) //*hello world *
2.3 选择和分组 () |
//选择| 读作"或"//分组()
//转义字符\ 转义字符后面的不会被参与运算,只是一个符号var a ="hello\"";console.log(a); //hello"
手机号:+86或0086 可有可无,最多1个空字符 不限制个数13,4,5,7,8 选其一9位数字(\+86|0086)?\s*1[34578]\d{9} //+86的+就要用到转义符
2.4.排除 ^
//除了abc[^abc]
三、限定符
3.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)) //truevar reg=/\d{3}/var str="1443ddges";console.log(reg.test(str)) //truevar 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,"**")) //**地金额少了附件**
3.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
贪婪模式和非贪婪模式
贪婪模式—正则表达式默认是贪婪的,会获取满足条件最大值
var str="18945eghe";var reg=/\d{3,6}/;console.log(str.replace(reg,"*")) //*eghe 取6个
非贪婪模式—量词后面加?—会获取满足条件的最小值
var str="18945eghe";var reg=/\d{3,6}?/;console.log(str.replace(reg,"*")) //*45eghe 取3个
