2016-07-13 80 views
0

我有例如如下文本之間忽略條件:JavaScript正則表達式的文本

"head1>data1,data2,data3|head2>data1,data2,data3|head3>data3,data4,data5**

現在我想用"|"

更換">data1..|"我使用這個:".replace(/>\S+\||>\S+$/g,"|");"

但是這不起作用,因爲它給我的數據如下:

"head1|head3|"而不是"head1|head2|head3|"

我找不到合適的方法。

+0

使用'> \ S +?(?:\ || $)' –

回答

2

您可以使用

>\S+?(?:\||$) 

regex demo

的一點是讓\S+懶惰,並縮短我們可以使用的地方>\S+?交替組之前的模式。

圖案的詳細資料

  • >\S+? - 字面>隨後與1+非空格符號,但儘可能少達
  • (?:\||$) - 文字|或字符串的結尾。
+1

謝謝你......真的很有幫助......我真的很感激。 –

0

一個簡單的方法:),試圖這樣

var str = "head1>data1,data2,data3|head2>data1,data2,data3|head3>data3,data4,data5"; 
 

 
console.log(str.replace(/>[a-z1-9,]+/g,"|").replace(/\|+/g, "|"));

>[a-z1-9,]+將選擇>data1,data2,data3

再換成多||

:)

+0

這是相當簡單的解決方案..謝謝。 –

+0

我相信簡單。 :) 樂於幫助。 –

+0

標記正確/有用的答案來關閉此問題。 –

0

您可以使用:

> [A-Z0-9,] + \ |

然後每次用單個|替換它。

+0

只是想知道爲什麼你在1小時後發佈完全相同的答案? –