如何利用正则排除某个路径

背景:在src目录下,有多个css文件,形如
src/aaa.css
src/bcd.css
src/normal.css
现在我想用正则排除src/normal.css这个路径,于是我写了如下正则

var str="src/aaa.css";
var res=/src\/(?<!normal)\w+\.css/.test(str)
console.log(res)//得到true,如果换成src/bcd.css也是true

但是问题来了,如果是遇到normal.css依然还是true,但我希望是false,该怎么改呢?大佬们帮帮我~

var str="src/normal.css";
var res=/src\/(?<!normal)\w+\.css/.test(str)
console.log(res)//这里得到依然是true,但我希望得到false
阅读 5.4k
2 个回答

用前瞻否定断言或者后瞻否定断言都可以的:

//下面是前瞻否定断言的几种实现
RE1=/src(?!\/normal)\/\w+\.css/
// 或者
RE2=/^src(?!\/normal)\/\w+\.css/
// 或者
RE3=/src(?!\/normal)\/\w+\.css$/
// 或者
RE4=/^src(?!\/normal)\/\w+\.css$/
//下面是后瞻否定断言的几种实现
RE1=/src\/\w+(?<!\/normal)\.css/
// 或者
RE2=/^src\/\w+(?<!\/normal)\.css/
// 或者
RE3=/src\/\w+(?<!\/normal)\.css$/
// 或者
RE4=/^src\/\w+(?<!\/normal)\.css$/

看你需要匹配的程度

/src(\/+)\w+(?<!(\/+)normal)\.css$/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题