2017-09-18 42 views

回答

4

我建議匹配並捕獲初始/尾部空格將被保持,然後匹配,將與_被替換任何其他空白:

var s = " One Two There "; 
 
console.log(
 
s.replace(/(^\s+|\s+$)|\s/g, function($0,$1) { 
 
    return $1 ? $1 : '_'; 
 
    }) 
 
);

這裏,

  • (^\s+|\s+$) - 第1組:要麼一個或在字符串
  • |的開始或結束多個空格 - 或
  • \s - 任何其他空白。

在回調方法$0代表了整場比賽,並且$1是1。一旦$1比賽,我們回到它的內容,否則,更換_參數控股集團的內容。

1

您可以使用^檢查第一個字符和$去年,換句話說,搜索即無論是不是線的開始,其他一些之前或之後比行尾以外的其他東西的空間:

var rgx = /(?!^)(\s)(?!$)/g; 
 
// (?!^) => not start of line 
 
// (?!$) => not end of line 
 
console.log(' One Two Three '.replace(rgx, "_"));

+0

供參考:如果在開始或結束時有多於1個空格,這將無法按預期工作。 –

相關問題