目录
认识正则
基础方法
test()
esec()
match()
replace()
注意
修饰符
i
g
实例:
边界符
\\b 单词边界
^ 匹配字母首行
$ 匹配字母尾行
量词
字符类
[ ] 任意匹配
– 连字符
^ 取反
. 匹配换行外的任意字符
元字符
\\d:
\\D;
\\w:
\\W:
正则练习
1.手机号脱敏
2.密码匹配 (6-16字母、数字、下划线)
4.匹配24小时时间 23:59 20:12 08:35 18:22
认识正则
正则表达式是用来匹配、查找、替换字符串的强大规则,几乎所有编程语言都支持。
const reg<名字> = /需要校验的规则/
基础方法
test()
查找文本中是否有符合字符,返回布尔值
esec()
返回数组,查找字符
match()
查找文本符合字符,返回,符合几个返回几个
replace()
替换
注意
test与match区别 一个返回布尔值,一个返回具体字符
修饰符
i
不区分大小写
g
全局匹配
实例:
const reg = /an/gi;
console.log(reg.test('aaaAn'));
const str = 'an Apple,an Ant';
console.log(str.match(reg));
边界符
\\b 单词边界
const reg1 = /\\ban\\b/ig;
const str1 = 'an Apple,an Ant';
^ 匹配字母首行
const reg2 = /^ab/;
console.log(reg2.test("aabab"));
$ 匹配字母尾行
const reg3 = /ab$/;
console.log(reg3.test("aababb"));
量词
* 0次或多次
const reg = /a*$/;
console.log(reg.test('aa'));
console.log(reg.test(' '));
console.log(reg.test('aab'));
+ 一次或多次
const reg2= /a+$/;
console.log(reg2.test('aa'));
console.log(reg2.test(' '));
console.log(reg2.test('aab'));
? 0次或1次
const reg3 = /a?$/;
console.log(reg3.test('aa'));
console.log(reg3.test(' '));
console.log(reg3.test('aab'));
{n} 重复n次 n要自己填数字
const reg4 = /a{2}$/;
console.log(reg4.test('aa'));
console.log(reg4.test(' '));
console.log(reg4.test('aab'));
{n,} 重复n次或多次
const reg5 = /a{n,}$/;
console.log(reg5.test('aa'));
console.log(reg5.test(' '));
console.log(reg5.test('aab'));
{n,m} 重复n到m次
const reg6 = /a{0,2}$/;
console.log(reg6.test('aa'));
console.log(reg6.test(' '));
console.log(reg6.test('aab'));
字符类
[ ] 任意匹配
const reg = /[abc]/;
console.log(reg.test("ababab"));
console.log(reg.test("abc"));
console.log(reg.test("acbab"));
console.log(reg.test("ededfd"));
– 连字符
const reg1 = /0-9/;
const reg2 = /a-z/;
const reg3 = /A-Z/;
const reg4 = /a-zA-Z0-9_/;
^ 取反
const reg5 =/[^0-9]/;
console.log(reg5.test('adad'));
. 匹配换行外的任意字符
const reg6 = /./;
console.log(reg6.test('adad'));
console.log(reg6.test('\\t'));
元字符
\\d:
匹配任意一个数字(0-9)
\\D;
匹配任意非数字字符,等价于 [^0-9]
\\w:
匹配任意一个字母、数字、下划线
\\W:
匹配非字母 / 数字 / 下划线的字符
正则练习
1.手机号脱敏
const a = /(1\\d{2})(\\d{5})(\\d{3})/
const num = "16638990987"
console.log(num.match(a))
const num2 = num.replace(a, '$1*****$3')
console.log(num2)
2.密码匹配 (6-16字母、数字、下划线)
const password = /^[\\d\\w_]{6,16}$/
const str = '16yre578uu778_'
console.log(str.match(password))
4.匹配24小时时间 23:59 20:12 08:35 18:22
const time = /^(\\d{2}){00,23}:(\\d{2}){0,59}$/
const str3 = '23:59'
const str4 = '20:12'
const str5 = '08:35'
const str6 = '18:22'
console.log(str3.match(time))
console.log(str4.match(time))
console.log(str5.match(time))
console.log(str6.match(time))



