2009-09-10 49 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项