【前端面试】正则表达式的使用/示例/进阶篇

主要讲解正则表达式的分组、回溯与断言。

分组

分组实现起来很简单,使用()即可。
可以捕获一个分组:把多个标记分在同一组并创建一个捕获分组,用来创建子串或者引用。
在这里插入图片描述
举例:提取标签中的内容
在这里插入图片描述
提取学号:
在这里插入图片描述
另外将*替换为?也可以:
在这里插入图片描述

提取年月日
在这里插入图片描述

或者条件

在分组的同时可以使用或者条件。使用|完成。
和逻辑或相似,匹配|前面的或后面的表达式。
eg:匹配指定的图片格式:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

非捕获分组

可以不捕获数据,也能使用分组的功能。

由于捕获分组会将匹配的内容存储在内存中供后续引用,而非捕获分组不会将其内容存储在内存中。所以如果不想将匹配的内容存储在内存中时,非捕获分组就会有更好的性能。

在这里插入图片描述
在这里插入图片描述

回溯引用

比如,我们有时要匹配一段html代码,如果不使用回溯引用,我们会这样写:

/<\w+>.*</\w+>/g

在这里插入图片描述
但是如果把</font></bar>,利用上述方法依然可以匹配上,但是我们想要的结果是不匹配</bar>
解决方案:使用回溯引用。当引用第一个分组内容,使用\1来引用。(排列顺序从1开始)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

断言

先行断言

正向先行断言

使用(?=表达式)的格式,就是从某个位置往右看,所在位置右侧必须能够匹配表达式,但是不包括在结果中。
例子:提取喜欢两个字,要求喜欢后面必须有你。

/喜欢(?=你)/g

在这里插入图片描述
这个可以用来验证字符串中是否同时具备大写字母和小写字母。
在这里插入图片描述
可以做密码强度的验证:
在这里插入图片描述

反向先行断言

反向先行断言就是保证右边不能出现某字符(?!表达式) 完成。
比如取出喜欢两个字,要求喜欢后面不能出现你。
在这里插入图片描述
在这里插入图片描述

后行断言

先行断言是从左往右看,后行断言是从右往左看。

正向后行断言

(?<=表达式)表示在某个位置向左看,该位置的左侧必须能匹配这个表达式
比如要取出喜欢两个字,要求喜欢的前面有我,后面有你:
在这里插入图片描述
在这里插入图片描述

反向后行断言

(?<!表达式)表示在某个位置向左看,所在位置左侧不能匹配表达式
比如:取出喜欢两个字,要求喜欢前面没有我,后面没有你。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

综合实践

1、提取生日日期
在这里插入图片描述
2、匹配所有小数
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值