【问题标题】:Using regex to to replace only if the string filename has .jpg or .png extension仅当字符串文件名具有 .jpg 或 .png 扩展名时才使用正则表达式替换
【发布时间】:2021-01-05 05:49:39
【问题描述】:

我有一个巨大的文件名字符串列表,仅当字符串文件名具有 .jpg 或 .png 扩展名时才使用正则表达式替换

表示文件名是否为

Scene.jpg 那么预期结果是IMG_Scene.jpg

Scenejpgx.docx 那么预期结果是Scenejpgx.docx 本身

我试过了

str.replace(/^/i,"IMG_");

但这会替换每个字符串。

【问题讨论】:

  • 使用:str.replace(/^(?=.*\.(?:jpg|png)$)/, 'IMG_')

标签: javascript regex


【解决方案1】:

你可以使用

.replace(/.*\.(?:jpg|png)$/i, 'IMG_$&')

regex demo

详情

  • .* - 除换行符以外的任何零个或多个字符尽可能多
  • \. - 一个点
  • (?:jpg|png) - jpgpng
  • $ - 字符串结束。

$& 是整个匹配的反向引用,所以IMG_$& 基本上是在匹配前面加上IMG_

查看 JavaScript 演示:

const strings = ['Scene.jpg','Scenejpgx.docx'];
const re = /.*\.(?:jpg|png)$/i;
strings.forEach( x =>
  console.log(x, '=>', x.replace(re, 'IMG_$&'))
);

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多