【问题标题】:How can I use regexes in Javascript to chop part of a url without specifying fixed length?如何在 Javascript 中使用正则表达式来截断部分 url 而无需指定固定长度?
【发布时间】:2025-12-29 17:30:07
【问题描述】:

我正在编写一个程序,使用 Javascript 将我的文件系统中的路径与从 SQL 数据库中提取的 url 匹配。拉取的 URL 结构如下:

http://examplesite.com/wp-content/uploads/YYYY/MM/17818380_1556368674373219_6750790004844265472_n-1.jpg
http://examplesite.com/wp-content/uploads/YYYY/MM/17818380_1556368674373219_6750790004844265472_n.jpg
https://examplesite.com/wp-content/uploads/YYYY/MM/10643960_909727132375975_2074842458_n-44x55.jpg
http://examplesite.com/wp-content/uploads/YYYY/MM/10643960_909727132375975_2078842458_n-320x150.jpg

等等。有些有http,有些有https。

我尝试将文件与 url 匹配

if(files[i] === urlsfromdb[j].substring(50,urlsfromdb[j].length-4))...

我想在 ...MM 之后获取 / 之后的所有内容,但上面有时包括前导斜杠,这反过来会破坏程序。我怎样才能用正则表达式做到这一点?我想得到所有的 jpg,我正在使用 NPM glob 来做。

此外,对于带有 -WWWxHHH.jpg 的文件,可能是 2 或 3 个 Ws 或 Hs,我也想删除这些文件;来自数据库的 URL 永远不会真正拥有它们,但文件会。

【问题讨论】:

  • 什么是files 数组,什么是urlsfromdb 数组,什么是i,什么是j ...您的“代码”缺少任何细节
  • 我想将文件系统中的文件与数据库中的数据进行比较。文件系统既有原图,也有n-1.jpg、n-232x334.jpg等文件。
  • 这仍然无法解释代码中的这些变量是什么

标签: javascript regex glob


【解决方案1】:

使用正则表达式删除直到最后一个斜杠的所有内容。

urlsfromdb[j].replace(/^.*\//, '')

【讨论】:

  • 我怎样才能做到这两点,并删除 10643960_909727132375975_2078842458_n-320x150.jpg 中 n 之后的所有内容
【解决方案2】:

如果您只想要 JPEG 文件,您可以使用捕获组,因为所有 URL 的图像名称前都有 MM/。像这样的东西应该可以工作:

let regex = /.*MM\/([A-Za-z_0-9-]+.jpg)/g;
let match = urlsfromdb[j].match(regex)
let image = match[1]

【讨论】: