一. 简单介绍一下正则表达式的常用方法
test
判断字符串是否匹配正则表达式
let reg = /ab/g;
let str = 'ab@@Ab222#####ab';
console.log(reg.test(str)); // true
let str1 = 'a@@Ab222#####ac';
console.log(reg.test(str1)); // false
compile
一般用于修改正则表达式
let reg = /ab/g;
reg.compile('ac');
console.log(reg); // ac
exec
对字符串进行匹配后返回一个数组 ,无匹配时返回null
let reg = /ab/g;
let str = 'ab@@Ab222#####ab';
console.log(reg.exec(str)); // ['ab', index: 0, input: 'ab@@Ab222#####ab', groups: undefined]
二. 字符串方法与正则表达式的结合使用
search
查询字符串中与正则表达式第一个匹配的下标,没有则返回-1
let reg = /ab/g;
let str = 'ab@@Ab222#####ab';
console.log(str.search(reg)); // 0
replace
替换匹配正则的内容(第一个参数为正则表达式,可将符合正则匹配的内容全部替换)
let reg = /ab/g;
let str = 'ab@@Ab222#####ab';
console.log(str.replace(reg, 'EEE')); // EEE@@Ab222#####EEE
注:如果第一个参数为字符串,则只会替换匹配到的第一个内容
let reg = /ab/g;
let str = 'ab@@Ab222#####ab';
console.log(str.replace('ab', 'EEE')); // EEE@@Ab222#####ab
match
一般用于全局匹配,返回一个数组,内容为匹配的结果,无匹配时返回null
let reg = /ab/g;
let str = 'ab@@Ab222#####ab';
console.log(str.match(reg)); // ['ab', 'ab']
matchAll
一个参数,为正则表达式对象。如果不是正则表达式则会使用new RegExp(obj)隐式转换为正则表达式。表达式必须设置为 g (全局模式)否则会报错。
返回值为一个迭代器,可以使用for…of…遍历,或者用扩展符(…)或Array.from()实现一些功能
let reg = /ab/g;
let str = 'ab@@Ab222ab#####';
console.log(...str.matchAll(reg));
// ['ab', index: 0, input: 'ab@@Ab222ab#####', groups: undefined] ['ab', index: 9, input: 'ab@@Ab222ab#####', groups: undefined]
split
切割字符串,有两参数:
第一个参数必需,为字符串或正则表达式,从该参数指定的地方分割;
第二个参数可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
let reg = /ab/g;
let str = '-----ab@@Ab222ab#####';
console.log(str.split(reg)); // ['-----', '@@Ab222', '#####']