gpt4 book ai didi

javascript - 什么是匹配以 `.js` 但不是 '.bin.js' 结尾的任何文件名的好正则表达式

转载 作者:行者123 更新时间:2023-11-29 21:24:20 25 4
gpt4 key购买 nike

比如我要匹配如下:

  • 文件1.js
  • file2.src.js
  • file3.bin.src.js
  • file1.binbin.js
  • file1.in.js
  • 文件1.b.js

但不是:

  • 文件1.bin.js
  • file2.src.bin.js

到目前为止,我有以下解决方案:

  • ^(?!.+\.bin\.js$).+\.js$ https://regex101.com/r/iR6yC9/1 .这种方法的问题是 .+.js$ 被拼写了两次,所以感觉有点冗长和多余。

  • ^(?:(?!\.bin\.js$).)+\.js$ https://regex101.com/r/zQ1kE0/1 .第二种方法的问题在于,在非捕获组内部向前看会降低其可读性,尽管它确实“重用”了 .+

我觉得这两种解决方案都不理想。我想知道是否有一个好的正则表达式来解决这个问题,它更易读,更少冗余

最佳答案

如果 Javascript 有负面回顾,那就是这样做的方式。既然没有,最可读的解决方案(恕我直言)是使用两个正则表达式。

if (/\.js$/.test(filename) && !/\.bin\.js$/.test(filename))

如果您可以使用另一种具有负面回顾的语言来做到这一点,那将是:

/(?<!\.bin)\.js$/

如果您阅读 javascript regex - look behind alternative?您会发现您的原始表达式是此缺失功能的常见解决方法之一。

关于javascript - 什么是匹配以 `.js` 但不是 '.bin.js' 结尾的任何文件名的好正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37891624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com