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

被折叠的 条评论
为什么被折叠?



