Javascript 正则表达式否定回溯替代方案

Jon*_*nik 4 javascript regex webpack

看起来这不是关于后视的第一个问题,但我没有找到答案。

Javascript 没有(正|负)后视请求。

我需要一个与 *.scss 文件名匹配的正则表达式,但与 *.h.scss 之类的名称不匹配。后视请求看起来像:

/(?<!(\.h))\.scss$/
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 javascript 中做到这一点?我需要这个用于 webpack 规则“test”参数的正则表达式,所以只需要 javascript 正则表达式。

Wik*_*żew 5

您可以使用

/^(?!.*\.h\.scss$).*\.scss$/
Run Code Online (Sandbox Code Playgroud)

查看正则表达式演示

细节

  • ^ - 字符串锚点的开始
  • (?!.*\.h\.scss$)-负先行失败的比赛,如果该字符串结束与.h.scss
  • .* - 尽可能多的任何 0+ 个字符
  • \.scss-.scss在...的子串
  • $ - 字符串的结尾。