RegExp - 删除最后一个下划线和扩展名之间的所有内容

时间:2018-03-24 12:26:33

标签: javascript regex

我需要删除最后一个下划线和扩展名之间的所有内容 我们假设我的文件名如下:
first_01.png
second_file_02.png

我需要将这些字符串转换为
first_01.png => first.png
second_file_02.png => second_file.png
用一个正则表达式。文件名可能不同。

我在regex101.com上尽我所能,但我仍然想念一些......我已经尝试过了

/[^_]+(?=\.)/

...但这会给我first_.pngsecond_file_.png

2 个答案:

答案 0 :(得分:1)

替换它:

(.*)_\d+(.*)

用这个:

$1$2

说明:捕捉比赛前后的内容。匹配下划线和1位或更多位数。

答案 1 :(得分:1)

您可以使用_来匹配_(显然),然后使用[^_]+来匹配之后的内容,并为.的{​​{1}}提供肯定的先行断言跟随它的扩展名((?=\.)):

str = str.replace(/_[^_]+(?=\.)/, '');

function test(str, expect) {
  var result = str.replace(/_[^_]+(?=\.)/, '');
  console.log(str, "=>", result, result == expect ? ": Good" : ": ERROR");
}
test("first_01.png", "first.png");
test("second_file_02.png", "second_file.png");