替换除第一个和第一个之外的所有空格。最后一个

时间:2017-09-18 21:38:06

标签: javascript regex whitespace

我想替换除第一个和最后一个之外的所有空格作为此图像。

如何只更换红色的?

how to replace the red space

我试过了:

.replace(/\s/g, "_");

但它捕获了所有空格。

2 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用^检查第一个字符,并使用$查看最后一个字符,换句话说,搜索前面不是行首字符的空格,或者后跟其他内容的空格比行尾:

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