Javascript 从字符串中删除部分

Javascript 从字符串中删除部分,javascript,string,Javascript,String,我有这样一个字符串: dir/subdir/file-hash.ext 知道上面文本中的“散列”部分总是8个数字/字母长,我如何生成如下所示的字符串: dir/subdir/file.ext 唯一可以更改的是字符串开头是否有/ 我不知道如何用正则表达式实现这一点: var str2 = str1.replace(/-.{8}\.ext$/, '.ext'); 如果扩展名可能会更改(例如.odt而不是.txt),请使用 var str2 = str1.replace(/-.{8}(\.[\d

我有这样一个字符串:

dir/subdir/file-hash.ext
知道上面文本中的“散列”部分总是8个数字/字母长,我如何生成如下所示的字符串:

dir/subdir/file.ext
唯一可以更改的是字符串开头是否有
/


我不知道如何用正则表达式实现这一点:

var str2 = str1.replace(/-.{8}\.ext$/, '.ext');
如果扩展名可能会更改(例如
.odt
而不是
.txt
),请使用

var str2 = str1.replace(/-.{8}(\.[\d\w]+)$/, '$1');

由于具有固定长度,因此不需要使用正则表达式。请使用
(last)indexOf
substr

var path = "dir/subdir/file-01234567.ext"; // or "/dir/subdir/file-01234567.ext"
var pos = path.lastIndexOf("."); // find the last `.`
path = path.substr(0, pos - 8) + path.substr(pos); // dir/subdir/file-.ext
如果您希望它不带尾随的
-
,请使用:

path = path.substr(0, pos - 9) + path.substr(pos); // dir/subdir/file.ext

.replace(/-\w{8}(?=\.)/,“”)
你说的“散列部分”是什么意思?你可能想在
ext
之前转义