2017-09-18 43 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个空格,这将无法按预期工作。 –

相关问题