2012-01-03 3 views
1

隣り合わせに表示されるいくつかの単語の間のスペースを削除したいのですが、どうすればよいでしょうか?一致する単語の間にクラッタを除去するJavascriptの正規表現

次のCosider:また、私は"Z =A==B==C==D= Z"を期待

str = "Z =A= =B= =C= =D= Z"; 
str = str.replace(/(=\w+=)\s+(=\w+=)/g, "$1$2"); 

(すべてのマッチが一緒に参加しました)が、代わりに、私は=A= + =B=が一致すると考えられているよう"Z =A==B= =C==D= Z"=B==C=の間のスペース)を取得し、=C= + =D==B= + =C==B=は既に=A=と一致していたためではありません。

これを達成するために正規表現をどのように言い換える必要がありますか?

更新

私が使用している実際の試合は一例=?ISO-8859-1?B?dGVzdA==?=、私はこれらをmathcingに使用する正規表現のために、私はこれらのMIMEの間のスペースを削除したい/=\?[^?]+\?[QqBb]\?[^?]+\?=/

で、「MIME-言葉」です例

str= "hello =?ISO-8859-1?B?dGVzdA==?= =?ISO-8859-1?B?aG93?= =?ISO-8859-1?B?YXJlIHlvdQ==?=?" 

の文字列内の単語のoccurancesは、

になるはず
"hello =?ISO-8859-1?B?dGVzdA==?==?ISO-8859-1?B?aG93?==?ISO-8859-1?B?YXJlIHlvdQ==?=?" 
+0

なぜ単に 'str.replace(/ = =/G '')'? –

+0

私はこれらの単語にマッチする複雑な正規表現を持っています。= A =は単なる例であり、beginnigやendだけでなく、完全な単語と一致する必要があります。 – Andris

+2

これは、正規表現をグローバルに設定しても、重複するマッチと一致しません。あなたのニーズを少し詳しく説明できますか? –

答えて

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==?=?" 
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, "=="); 

を私はこれは単にこのliek 1つの単純な正規表現で行うことができると思いますOUTPUT

hello =?ISO-8859-1?B?dGVzdA==?==?ISO-8859-1?B?aG93?==?ISO-8859-1?B?YXJlIHlvdQ==?=? 
関連する問題