正则表达式的预判模式和贪婪模式

本文深入探讨了正则表达式中的预判模式和贪婪模式,通过实例展示了如何利用预判模式简化复杂字符串的验证过程,同时解析了贪婪模式的工作原理及如何避免其带来的问题。

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

1、 预判模式

1、适用于需要同时判断多个条件的情况下。
2、使用方法为(?=表达式)

案例

当我们需要验证一个字符串,它必须符合8-15位,必须有大写字母,小写字母,数字,特殊字符,这时候如果我们对每个条件都单独做判断,那会使代码非常多而且冗余,这时候我们的预判模式就登场了。

let reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\\/]).{8,15}$/
console.log(reg.test('aaaaaaasdA!'))//false
console.log(reg.test('1223456sdA!'))//true

这里我们分析一下这行代码,首先(?=.*[a-z])它的含义是当前字符串必须满足带有小写字母,(?=.*[A-Z])代表必须有大写字母,后边的两项也是一样的,这样我们就可以对于整个字符串进行多次验证,从而简化代码。

贪婪模式

1、贪婪模式形成的元凶是(.*)(.+),.会匹配所有字符,而*+又可以匹配多个,所以导致了该正则会匹配它之后的所有的字符,
2、取消贪婪模式我们可以用(.*?).+?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值