【问题标题】:Javascript Regex negative lookbehind AlternativeJavascript 正则表达式负后视替代
【发布时间】:2018-02-10 23:05:17
【问题描述】:

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

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

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

/(?<!(\.h))\.scss$/

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

【问题讨论】:

标签: javascript regex webpack


【解决方案1】:

你可以使用

/^(?!.*\.h\.scss$).*\.scss$/

regex demo

详情

  • ^ - 字符串锚的开始
  • (?!.*\.h\.scss$) - 如果字符串以 .h.scss 结尾,则否定 lookahead 匹配失败
  • .* - 尽可能多的任何 0+ 个字符
  • \.scss - 一个.scss 子字符串...
  • $ - 字符串结束。

【讨论】:

    【解决方案2】:

    您可以列出与.h 不匹配的所有可能的子模式并构建替代:

    /(?:[^.].|\.[^h]|^.?)\.scss$/
    

    【讨论】:

    • 感谢您的回复,这也是可行的解决方案,但Wiktor Stribiżew 的回答更容易理解。
    猜你喜欢
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2018-10-05
    相关资源
    最近更新 更多