2012-01-03 22 views
1

我想刪除一些詞之間的空格,彼此相鄰,我怎麼能實現這一點?JavaScript的正則表達式,以消除匹配的單詞之間的混亂

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"作爲=A=視爲匹配和=C= + =D=也(空間之間=B==C=)+ =B= ,但是=B= + =C=因爲=B=已經與=A=匹配。

我應該如何修改我的正則表達式來實現它?

更新

我使用實際的比賽是「默字」,例如=?ISO-8859-1?B?dGVzdA==?=和我使用mathcing這些正則表達式是/=\?[^?]+\?[QqBb]\?[^?]+\?=/

我想要去除這些啞劇之間的空間詞語occurances在一個字符串,例如

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

應成爲

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

爲什麼不能簡單地'str.replace(/ = = /克, '')'? – 2012-01-03 14:18:55

+0

我有一個複雜的正則表達式來匹配這些單詞,= A =只是一個簡單的例子,我需要匹配完整的單詞,而不僅僅是beginnig或end – Andris 2012-01-03 14:20:09

+2

原因是,即使將正則表達式設置爲全局,將不匹配重疊匹配。你能否更詳細地描述你的需求? – 2012-01-03 14:23:16

回答

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

爲什麼不能簡單地增加一個REPLACE語句喜歡這首後替換:

str = str.replace(/(=\w+==\w+=)\s+(=\w+==\w+=)/g, "$1$2"); 

更新:我認爲這是可以簡單地在一個簡單的正則表達式來完成liek這樣的:

str= "hello =?ISO-8859-1?B?dGVzdA==?= =?ISO-8859-1?B?aG93?= =?ISO-8859-1?B?YXJlIHlvdQ==?=?"; 
str = str.replace(/= =/g, "=="); 

OUTPUT

hello =?ISO-8859-1?B?dGVzdA==?==?ISO-8859-1?B?aG93?==?ISO-8859-1?B?YXJlIHlvdQ==?=? 
相關問題