2009-09-10 54 views
0
'{5}<blah>{0}</blah>' 

我想將其轉換成:用大括號作爲分隔符來分割一個字符串?

我目前使用的:________.split(/({.*?})/);

但是當大括號是第一個字符的情況一樣失敗:

'{0}<blah>' 

它變成: ['', '{0}', '<blah>'] ... 3元素陣列,而不是2

我的正則表達式有什麼問題?

謝謝!

+0

嘗試去掉括號,並且使之成爲一個一個或更多的比賽每2項。例如,/{.+?}/。 – 2009-09-10 13:26:14

回答

5

你的正則表達式沒有問題,但是你如何使用split,有一個問題。 Split根據分隔符返回一個數組,所以如果分隔符是FIRST,它將爲分割項的左側和右側提供這些東西。

只需檢查第一項=='',如果它是移除它。

+4

你在閱讀我的答案時,我正在打字! :) – PaulMcG 2009-09-10 13:24:59

+0

我也是!榮譽並不存在於互聯網上;) – roosteronacid 2009-09-10 13:27:26

+1

我是一個快節奏的盜版者,而且我是中西部一個非常突出的靈魂人物。 1 + 2 ==被盜回覆! – 2009-09-10 14:04:23

0

這應做到:

split(/((?!^)\{.*?\})/) 

負前瞻 - (?!^) - 成功當且僅當比賽不會在字符串的開頭開始。

0

你認爲的:

'{5}<blah>{0}</blah>'.split(/{([^}]+)}/g) 

在花塊的價值是從第1項