1.在正则表达式中添加括号,可以将匹配的字符串分组,可以分离我们匹配的字符串。
2.分组可以简化正则表达式,可以在正则表达式中引用分组本身。
3.分组可以捕获数据。
分组改怎么使用呢? --->在一长串数据中单独提取出我们想要的数据的时候
// 分组的用法
// 2022-5013-08
// 2022 5013 08
// 2022501308
// 使用正则表达式将以上的数字提取出来 2022 5013 08
var a = '2022-5013-08';
var b = '2022 5013 08';
var c = '2022501308';
var d = /\d{4}[\-\s]?\d{4}[\-\s]?\d{2}/g;
console.log(a.match(d));
console.log(b.match(d));
console.log(c.match(d));
我们可以看到,成功提取处了想要的数字。
2.分组中的或者符号 |这个或者符号在获取文件类型后缀的时候,比较方便。话不多说,上代码。
// 文件1.html
// 文件2.js
// 文件3.css
var a = "文件1.html"
var b = "文件2.js"
var c = "文件3.css"
var wenjian = /(.html|.js|.css)/g
console.log(a.match(wenjian));
console.log(b.match(wenjian));
console.log(c.match(wenjian));
可以看见最后的结果是可以匹配到到以上三种类型的文件后缀。
3. 非捕获分组 (?:表达式)当我们不需要捕获某个分组内的内容,但是又想要使用分组的时候。就使用非捕获分组(?:表达式)
// 20-5013-08
// 202 5013 08
// 2022501308
// 使用正则表达式提取
var a = '20-5013-08';
var b = '202 5013 08';
var c = '2022 501308';
var d = /(?:\d{2}|\d{3}|\d{4})[\-\s]?\d{4}[\-\s]?\d{2}/g;
console.log(a.match(d));
console.log(b.match(d));
console.log(c.match(d));
4.分组的回溯引用 \+数字
什么是分组的回溯引用呢? 先看例子。
// 下面有两个html标签 一个是错误的 一个正确的 我们不想找到错误的html标签 该怎么办呢?
// 123找不到我
// sagdhja可以找打我
var a = '123找不到我
';
var b = 'sagdhja可以找打我';
var str = /<(\w+)>(.*?)<\/>/g
console.log(a.match(str));
console.log(b.match(str));
从例子里面我们可以看到正则表达式中有 \1 这个写法。这个就是分组的回溯 \1 就表示这个表达式中的第一个分组,\2 表示正则表达式中的第二个分组,可以依次类推。
用法就是如果需要后面的内容与前面的内容一样的时候,我们可以直接这样使用。
5.正向先行断言 (?=表达式)是从左往右看,作用是保证右边必须出现某个字符
var str = /你很漂亮(?=啊)/g
这个正则表示"你很漂亮"的后面必须是"啊",否则就匹配不到。这种写法就叫做正向先行断言。先行断言可以用来判断字符串是否符合特定的规则。
6.反向先行断言 (?!表达式)也是从左往右看,作用是保证右边不能出现某个字符
var str = /你很漂亮(?!啊)/g
这个正则表示"你很漂亮"的后面必须不是"啊",否则就匹配不到。这种写法就叫做反向先行断言。
7.正向后行断言 (?<=表达式)先行断言和后行断言只有一个区别,就是先行断言从左往右看,后行断言从右往左看.
var str = /(?<=张)\S+/ // 匹配所有姓张的人的名字 但是不匹配姓
8.反向后行断言 (?var str = /(?
这种就是反向先行断言,表示喜欢你的的前面不能有我
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)