一、总结
RegExp对象提供两个方法:
reg.test(str); //返回布尔值,测试能不能匹配到
reg.exec(str); //返回多个数组,显示匹配到的分组及子分组的信息信息
String对象提供四个方法:
str.search(reg);//返回index,类似test()能不能找到
str.match(reg); //返回一个数组,显示信息没有exec(str)多,毕竟正则表达式对象返回的信息肯定要多
str.replace(reg,replacement); //replacement可以为字符串,反向引用,函数
str.split(separator[,howmany]);//howmany为数组可能的最大长度
二、具体内容
1、创建RegExp对象
1.字面量:
let reg=/pattern/attributes;
eg:let reg=/\w\d/g; //首先 /正则表达式/ 后面加g/i/m
2.构建函数:
let reg=new RegExp(pattern,attributes);
eg:let reg=new RegExp("\\w\\d","g");字符串转义,字符串的两个\\实际上是一个\
其中:attributes为修饰符,有:i(忽略大小写),g(全局搜索),m(多行搜索)
2、RegExp属性
1.global //否具有标志 g 使用:RegExpObject.global 返回true、false
2.ignoreCase //否具有标志 i 使用:RegExpObject.ignoreCase
3.multiline //否具有标志 m 使用:RegExpObject.multiline
4.lastIndex //属性用于规定下次匹配的起始位置 只在g全局搜索下生效。使用:RegExpObject.lastIndex
5.source //返回模式匹配所用的正则表达式 eg:reg.source 为\w\d
3、方法
1.exec() 方法
用于检索字符串中的正则表达式的匹配,会更新自身
语法:RegExpObject.exec(string);
//返回数组[匹配的文本[,分组内容]] 如果有多个分组,则多个分组内容都显示出来
eg:
let reg=new RegExp("\\d(\\D)","g");//这里设置一个分组
let str="1a222bsfd3s";
let s=null;
while (s=reg.exec(str)) {
console.log(s);
console.log(reg.lastIndex);//每次检索会更新自身的lastIndex(只有全局搜索时才会更新这个属性)
} //设置为当前匹配结果的最后字符的下个位置,即下次就从lastIndex开始检索
//结果 //因为会更新自身lastIndex属性,所以如果要检索新的字符串,要重置lastIndex为0
[ '1a', 'a', index: 0, input: '1a222bsfd3s' ] //比数组多了index、input属性:分别代表匹配文本的第一个位置和被检索的字符串str
2
['2b', 'b', index: 4, input: '1a222bsfd3s' ] //每次匹配就是文本的子字符串为什么是数组呢因为第一项为匹配到的文本
6 //后面几项为:如果正则表达式有分组,则分组内容也显示出来
[ '3s', 's', index: 9, input: '1a222bsfd3s' ]
11
2.test() 检测一个字符串是否匹配某个模式
语法:RegExpObject.test(string);//返回布尔值 全局搜索下,也会更新lastIndex
网友评论