我想替换除第一个和最后一个之外的所有空格作为此图像。
如何只更换红色的?
我试过了:
.replace(/\s/g, "_");
但它捕获了所有空格。
答案 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, "_"));