我有一个像这样的字符串:
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很不好,所以我可能做错了:(
答案 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)
用“定界符”替换匹配值内的每个空白字符。