如何在不反转标点的情况下反转字符串?

M S*_*han 0 javascript function

我正在尝试反转字符串中的单词,而对标点符号没有任何影响。
这是我当前的代码:

function reverse(str) {
    str = str.split("").reverse().join("");
    str = str.split(" ").reverse().join(" ");
    console.log(str)
}; 

reverse("This is fun, hopefully.")
Run Code Online (Sandbox Code Playgroud)

以上功能的结果是sihT si ,nuf .yllufepoh
在我试图使其像sihT si nuf, yllufepoh.

Rob*_*obG 5

另一种方法是使用replace和正则表达式将所有字母序列以其反转形式替换,例如

function reverseWords(s) {
  return s.replace(/[a-z]+/ig, function(w){return w.split('').reverse().join('')});
}

document.write(reverseWords("This is fun, hopefully.")); // sihT si nuf, yllufepoh. 
Run Code Online (Sandbox Code Playgroud)

如果您希望将数字包括为单词字符(wg W3C),则正则表达式应为:

/ \ w + / g