javascript 正则表达式匹配不包含特定字符串的字符

有时应用场景不允许有逻辑代码,只允许使用正则表达式。比如禁止使用 String.prototype.indexOf 等 js 原生函数,这时候需要借助正则表达式来处理逻辑。

题:有如下字符串数组,使用正则查出不包含 min.js 的字符串。

1
var str = ['xx.min.js','xx.js','x.js','x.min.js'];

方案一

使用逻辑非

1
!/min\.js/.test(string)

条件再苛刻一点,不允许使用逻辑非,那么就需要使用正则表达式直接匹配出不包含的字符串。这时候需要用到方案二。

方案二

1
/^((?!min\.js).)+$/.test(string)

(?!min\.js). 表示任意字符前面都不能是 min.js 。后面的 . 也可以放在前面 .(?!min\.js),语法相同,表示匹配任意字符后面不能是 min.js

^((?!min\.js).)+$ 表示从开始到结束,任意字符前面都不是 min.js 则匹配成功,否则匹配失败。

完整语法参考 MDN https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

本文由 linx(544819896@qq.com) 创作,采用 CC BY 4.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。本文链接为: https://blog.jijian.link/2020-04-01/js-regexp/

如果您觉得文章不错,可以点击文章中的广告支持一下!