npm中的文件正则表达式替换

时间:2016-07-26 15:02:02

标签: regex

我尝试匹配以下文件格式,以使用绝对URL为文件添加前缀。字符串是index.html文件的一部分,我使用npm replace来查找/替换。以下是不同的文件名:

  • 的favicon.ico
  • main.somestringwithcharacterandletters.css
  • main.somestringwithcharacterandletters.js
  • somestringwithcharactersandletters.woff
  • somestringwithcharactersandletter.ttf

我已尝试过以下正则表达式:

(main\.)?(\w)+\.(css|js|woff|woff2|eot|ttf|png|ico){1}

这匹配文件名和扩展名中的最后一个字符,而不是完整的文件名和扩展名。需要更改什么才能匹配完整的文件名,以便我可以在绝对路径前加上?

1 个答案:

答案 0 :(得分:1)

删除多余的{1},更重要的是 - 将+移到第二个捕获组中:

(main\.)?(\w+)\.(css|js|woff2?|eot|ttf|png|ico)
            ^                                  ^

请参阅regex demo

enter image description here

当您将一个量词设置为一个组时,整个组模式会重复匹配,但每次后续匹配时都会不断重写组堆栈的内容。因此,在许多情况下,总是要检查你量化的东西,你想要量化群体模式,而不是群体本身(除非它是一个非捕获群体,当你知道没有捕获任何东西时我们用它来分组一个序列子模式)。