我想删除彼此相邻的一些单词之间的空格,我该如何实现?
Cosider以下:
str = "Z =A= =B= =C= =D= Z";
str = str.replace(/(=\w+=)\s+(=\w+=)/g, "$1$2");
我希望"Z =A==B==C==D= Z"
(所有匹配都加在一起),但我得到"Z =A==B= =C==D= Z"
(=B=
和=C=
之间的空格)=A=
+ {{ 1}}被视为匹配,=B=
+ =C=
也被认为是=D=
+ =B=
,因为=C=
已经与=B=
匹配
我应该如何改写我的正则表达式来实现它?
更新
我正在使用的实际匹配是“mime-words”,例如=A=
,我用于计算这些匹配的正则表达式为=?ISO-8859-1?B?dGVzdA==?=
我想在字符串中删除这些mime词出现之间的空格,例如
/=\?[^?]+\?[QqBb]\?[^?]+\?=/
应该成为
str= "hello =?ISO-8859-1?B?dGVzdA==?= =?ISO-8859-1?B?aG93?= =?ISO-8859-1?B?YXJlIHlvdQ==?=?"
答案 0 :(得分:1)
为什么不在第一次替换后添加这样的另一个替换语句:
str = str.replace(/(=\w+==\w+=)\s+(=\w+==\w+=)/g, "$1$2");
更新:我认为这可以简单地在一个简单的正则表达式中完成:
str= "hello =?ISO-8859-1?B?dGVzdA==?= =?ISO-8859-1?B?aG93?= =?ISO-8859-1?B?YXJlIHlvdQ==?=?";
str = str.replace(/= =/g, "==");
<强>输出强>
hello =?ISO-8859-1?B?dGVzdA==?==?ISO-8859-1?B?aG93?==?ISO-8859-1?B?YXJlIHlvdQ==?=?
答案 1 :(得分:1)
使用积极向前看:
str= "hello =?ISO-8859-1?B?dGVzdA==?= =?ISO-8859-1?B?aG93?= =?ISO-8859-1?B?YXJlIHlvdQ==?=?"
res = str.replace(/(=\?[^?]+\?[QqBb]\?[^?]+\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]+\?=)/g, "$1");
<强>输出:强>
"hello =?ISO-8859-1?B?dGVzdA==?==?ISO-8859-1?B?aG93?==?ISO-8859-1?B?YXJlIHlvdQ==?=?"