我需要删除最后一个下划线和扩展名之间的所有内容
我们假设我的文件名如下:
first_01.png
second_file_02.png
我需要将这些字符串转换为
first_01.png => first.png
second_file_02.png => second_file.png
用一个正则表达式。文件名可能不同。
我在regex101.com上尽我所能,但我仍然想念一些......我已经尝试过了
/[^_]+(?=\.)/
...但这会给我first_.png
和second_file_.png
。
答案 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");