将字符串拆分为字符之间的数组?

时间:2014-06-30 08:26:49

标签: javascript arrays regex string

所以我试图以一些不常规的方式分割我所拥有的字符串。我尝试用正则表达式做一些事情,但我并没有用正则表达式来创造这样的东西。

基本上我有一个看起来像这样的字符串:

var links = "<a>4</a><b><c><d><e><f>";

我想使用.split()js方法在数组中接收它们,如下所示:

["<a>4</a>", "<b>", "<c>", "<d>", "<e>", "<f>"]

所以很明显,我需要将它们拆分为><字符,但如果我这样做:

links.split("><");

他们会以我想要的方式分裂,但我会松开><的标志。例如:

["<a>4</a", "b", "c", "d", "e", "f>"]

这对我来说不是一个好办法。

基本上我的问题是:是否可以使用正则表达式或其他方法制作某种解决方案以获得我想象的数组结果?

2 个答案:

答案 0 :(得分:2)

快速而干净的方法是使用match代替split

var matches = links.match(/<.+?>(?=<|$)/g)

对于你的字符串,它给出了

["<a>4</a>", "<b>", "<c>", "<d>", "<e>", "<f>"]

小心使用像HTML这样的非常规语言的正则表达式是危险的。对于简单的事情来说,这通常是好的,但它也有限,你可能会遇到意外,例如,如果你想将它应用于嵌套元素。

答案 1 :(得分:1)

一个快速的脏方法是在><和正则表达式replace之间添加分隔符,然后在该分隔符上拆分:

var links = "<a>4</a><b><c><d><e><f>";
links.replace(/></g, '>|<').split('|');

结果:

["<a>4</a>", "<b>", "<c>", "<d>", "<e>", "<f>"]

请确保您选择的分隔符不会出现在字符串本身中 (您可以使用更长的字符串作为分隔符,例如:"|-|"。)