如何循环遍历字符串并替换除最后一个句点之外的所有句点?

cod*_*pia 1 javascript each loops replace

假设我有一个这样的字符串:

var test = my.long.file.name.zip

我正在使用javascript获取此字符串中的句点总数,如下所示:

var dots = (test.match(/\./g) || []).length;
Run Code Online (Sandbox Code Playgroud)

如果字符串中有多个句点,我想用下划线替换字符串中的所有句点.

   if(dots>"1"){   
     var newname = test.replace(/\./g, "_");
     console.log(newname);
    }
Run Code Online (Sandbox Code Playgroud)

问题是这正在取代所有时期.我想保持最后一个完好无损.所以我希望newname变量读取为:

my_long_file_name.zip

我的猜测是我应该$.each()以某种方式迭代除了最后一个之外的所有更改名称.我该怎么做?

Jam*_*iec 6

你不一定需要一个循环,你可以使用更复杂的正则表达式,它使用积极的前瞻

正则表达式/\.(?=.*\.)/g找到句点,但只有在后续某个时间段的某个地方,这意味着最后一个句点不匹配.

window.onload = function(){
  var input = "my.long.file.name.zip"
  var result = input.replace(/\.(?=.*\.)/g,'_')

  alert(result);
}
Run Code Online (Sandbox Code Playgroud)