使用javascript替换特定位置的所有空格

时间:2018-10-11 11:26:35

标签: javascript regex

我有一个像这样的字符串:

image.id."HashiCorp Terraform Team <terraform@hashicorp.com>" 
AND  image.label."some string"."some other string"

我只想用引号括起来的字符串用'___'替换所有空格,因此最终的字符串将如下所示:

  image.id."HashiCorp___Terraform___Team___<terraform@hashicorp.com>" 
    AND  image.label."some___string"."some___other___string"

我已经尝试过:

text = text.replace(/"(\w+\s+)+/gi, function (a) {
                return a.replace(' ', _delimiter);
            });

但是它只会替换第一个空格,所以我得到:  HashiCorp___Terraform Team <terraform@hashicorp.com>。 和some___other string

我对regexp很不好,所以我可能做错了:(

1 个答案:

答案 0 :(得分:3)

您可以使用/"[^"]+"/g正则表达式来匹配两个"字符之间的子字符串,然后在回调方法中替换空白字符:

var text = 'image.id."HashiCorp Terraform Team <terraform@hashicorp.com>" \nAND  image.label."some string"."some other string"';
var _delimiter = "___";
text = text.replace(/"[^"]+"/g, function (a) {
          return a.replace(/\s/g, _delimiter);
});
console.log(text);

"[^"]+"模式匹配",然后匹配"以外的1个或更多字符,然后匹配结束符"a变量保存匹配值,a.replace(/\s/g, _delimiter)用“定界符”替换匹配值内的每个空白字符。