前瞻、后顾、负前瞻、负后顾用法

博客介绍了正则表达式中前瞻和负向前瞻的作用,前瞻用于匹配特定字符前的字段,负向前瞻则匹配特定字符后非指定字符的情况。还给出了项目中用户密码设置的正则表达式,要求密码由大写字母、小写字母、数字、特殊符号中任意三种组合,且长度在8 - 30位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表达式名称描述
(?=exp)正向前瞻匹配后面满足表达式exp的位置
(?!exp)负向前瞻匹配后面不满足表达式exp的位置
(?<=exp)正向后顾匹配前面满足表达式exp的位置(JS不支持)
(?<!exp)负向后顾匹配前面不满足表达式exp的位置(JS不支持)

我们来看看前瞻的作用:
栗子:

var str = 'Hello, Hi, I am Hilary.';
var reg = /H(?=i)/g;
var newStr = str.replace(reg, "T");
console.log(newStr);//Hello, Ti, I am Tilary.

由栗子可以看出,正则匹配H,前瞻的作用就是只匹配i前面是H的字段,要不则不匹配。

再来看看负向前瞻的作用:

var str = 'Hello, Hi, I am Hilary.';
var reg = /H(?!i)/g;
var newStr = str.replace(reg, "T");
console.log(newStr);//Tello, Hi, I am Hilary.

由栗子可以看出,先匹配H字段,凡事H后面不是紧跟着i的,则匹配成功。

最近项目里,要求用户密码设置的要求是,在大写字母小写字母、数字、特殊符号中,任意组合三种则才可以设置密码成功。
正则如下:

var reg = /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&*`~()-+=.]+$)
         (?![a-z0-9]+$)(?![a-z\W_!@#$%^&*`~()-+=.]+$)(?![0-9\W_!@#$%^&*`~()-+=.]+$)
         [a-zA-Z0-9\W_!@#$%^&*`~()-+=.]{8,30}$/;

解释如下(常用的正则符号不解释):
1、纯大小写字母的字段不匹配
2、纯大写字母和数字的字段不匹配
3、纯大写字母和特殊符号的字段不匹配
4、纯小写字母和数字的字段不匹配
5、纯小写字母和特殊符号的字段不匹配
6、纯数字和特殊符号的字段不匹配
7、大小写字母、数字、特殊符号并且在8-30位则匹配成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值