gpt4 book ai didi

javascript - 使用具有特殊条件的正则表达式(lookahead/lookbehind)字符串替换哈希

转载 作者:行者123 更新时间:2023-12-03 02:54:39 27 4
gpt4 key购买 nike

让我留下以下字符串列表,在 JavaScript (NodeJS) 中,我想一次应用一个正则表达式并替换 .. 之间的哈希值,但我不想替换这个词,.style。或 .bundle. 或 .chunk. 并且在没有前面的点的情况下它也应该可以替换散列。

// hash starts with number
/css/app.style.7fef363d5a8c4ef2458c.css
/css/app.bundle.7fef363d5a8c4ef2458c.css
/css/app.chunk.7fef363d5a8c4ef2458c.css
/css/app.7fef363d5a8c4ef2458c.css
/css/loading-animation.7fef363d5a8c4ef2458c.css

// hash starts with letter
/css/app.style.b3bcb606396f0c96623a.css
/css/app.bundle.b3bcb606396f0c96623a.css
/css/app.chunk.b3bcb606396f0c96623a.css
/css/app.b3bcb606396f0c96623a.css

// no preceeding dot separated name before the hash
/css/loading-animation.b3bcb606396f0c96623a.css
/css/app.b3bcb606396f0c96623a.js

// It should not affect items without a hash
/fonts/MaterialIcons-Regular.eot
/fonts/MaterialIcons-Regular.svg

结果应该是

// hash starts with number
/css/app.style.css
/css/app.bundle.css
/css/app.chunk.css
/css/app.css
/css/loading-animation.css

// hash starts with letter
/css/app.style.css
/css/app.bundle.css
/css/app.chunk.css
/css/app.css

// no preceeding dot separated name before the hash
/css/loading-animation.css
/css/app.js

// It should not affect items without a hash
/fonts/MaterialIcons-Regular.eot
/fonts/MaterialIcons-Regular.svg

我努力尝试,最接近的是这个

 const manifest = {};
stats.assets.map(asset => asset.name)
.sort()
.forEach((file) => {
let regEx = /\.(?!(?:[A-Za-z]))(([^.]*))\./gi
let passTest = regEx.test(file);
let key = file.replace(regEx, '.');
console.log(file, passTest, key);
manifest[key] = file;
});

但这仅替换以数字开头的哈希值,并忽略其余所有内容。

我还尝试了 /\.(?!(?:[A-Za-z]))(([^.]*))\./gi; 但这只是替换了第一次出现 .something.

我也没有运气负向回顾(根据 herehere 这是 JS 中的一个新功能)

正确的正则表达式是什么?

最佳答案

这个怎么样?

[^.]+\.(?=[^.]+$)

它查找任何非句点字符,后跟句点 ([^.]+\.),后跟(使用前瞻)一系列非句点字符 ([ ^.]+)和行结束符($)。

https://regex101.com/r/5QfED2/1

关于javascript - 使用具有特殊条件的正则表达式(lookahead/lookbehind)字符串替换哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680750/

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