前言
其实之前还真没注意到正则表达式总还有“优先级”这一说法。不过平常注意一下就可以了【踩过一次坑之后自然就会记住了~】。
采坑
一个很简单的应用:验证图片后缀是否允许。
代码语言:javascript复制let a = '1.jpg';
console.log(/.gif|png|jpg$/i.test(a));
咋一看,好像没问题。
但是这样呢?
代码语言:javascript复制let a = '1.pngdfadsf';
console.log(/.gif|png|jpg$/i.test(a));
还是对的?我们想要判断图片必须以要求的结尾,但是这样返回的也是正确的?
因为|
的优先级太低了,所以以上正则实际意思是:
- 匹配有.gif
- 匹配有.png
- 匹配有.jpg 并且是以.jpg结尾的
解决方法很简单:加括号强行提升优先级
代码语言:javascript复制let a = '1.pngdfadsf';
console.log(/.(gif|png|jpg)$/i.test(a));
踩过坑之后应该就会注意一下了。