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、取消贪婪模式我们可以用(.*?)
和.+?