javascript-在不丢失分隔符的情况下拆分

javascript-在不丢失分隔符的情况下拆分,javascript,arrays,split,Javascript,Arrays,Split,可能重复: 我有一个字符串: "<foo>abcdefg</bar><foo>abcdefg</bar><foo>abcdefg</bar><foo>abcdefg</bar>" “abcdefgabcdefgabcdefgabcdefg” 我想将“abcdefg”的所有实例分成如下数组: ["<foo>abcdefg</bar>", "<foo>abcdef

可能重复:

我有一个字符串:

"<foo>abcdefg</bar><foo>abcdefg</bar><foo>abcdefg</bar><foo>abcdefg</bar>"
“abcdefgabcdefgabcdefgabcdefg”
我想将“abcdefg”的所有实例分成如下数组:

["<foo>abcdefg</bar>", "<foo>abcdefg</bar>", "<foo>abcdefg</bar>", "<foo>abcdefg</bar>"];
[“abcdefg”、“abcdefg”、“abcdefg”、“abcdefg”];
我尝试:

var str="<foo>abcdefg</bar><foo>abcdefg</bar><foo>abcdefg</bar><foo>abcdefg</bar>";
var Array_Of_FooBars = str.split("</bar>"); 

alert(Array_Of_FooBars);
var str=“abcdefgabcdefgabcdefg”;
变量数组_Of_FooBars=str.split(“”);
警报(一个或多个工具栏的数组);
但它的回报是:

["<foo>abcdefg", "<foo>abcdefg", "<foo>abcdefg", "<foo>abcdefg",]
[“abcdefg”、“abcdefg”、“abcdefg”、“abcdefg”,]
它正在删除分隔符“”。我不想那样

如何使用split而不丢失字符串中的分隔符

谢谢。 Ken

使用,以便正则表达式断言特殊字符存在,但实际不匹配:

string.split(/<br \/>(?=&#?[a-zA-Z0-9]+;)/g);
string.split(/(?=&#?[a-zA-Z0-9]+)/g);

试试这个。这不是一个完美的解决方案,但在大多数情况下都应该有效

str.split(/(?=<foo>)/)

您只需迭代一个简单的正则表达式,然后以这种方式构建数组:

var x = new RegExp('<foo>(.*?)</bar>', 'ig'),
s = "<foo>abcdefg</bar><foo>abcdefg</bar><foo>abcdefg</bar><foo>abcdefg</bar>",
matches = [];

while (i = x.exec(s)) {
    matches.push(i[0]);
}
var x=new RegExp(“(.*?”,“ig”),
s=“abcdefgabcdefgabcdefg”,
匹配项=[];
而(i=x.exec){
matches.push(i[0]);
}

刚刚意识到使用
String.match()
会更好;此代码对于匹配标记内的内容更为有用。

似乎您最希望使用match:

var s = "<foo>abcd1efg</bar><foo>abc2defg</bar><foo>abc3defg</bar><foo>abc4defg</bar>"
s.match(/(<foo>.+?<\/bar>)/g)
// =>["<foo>abcd1efg</bar>", "<foo>abc2defg</bar>", "<foo>abc3defg</bar>", "<foo>abc4defg</bar>"]
var s=“abcd1efgabc2defgabc3defgabc4defg”
s、 匹配(/(.+?)/g)
//=>[“abcd1efg”、“abc2defg”、“abc3defg”、“abc4defg”]

您有一个XML/HMTL元素字符串,如
abcdefg
?我不这么认为。(翻译:当你编出你要问的代码时,这确实会适得其反。此外,你的问题是:“我想在Y上做X,以得到Z。”实际上应该是“我有Y,想要Z,我该怎么做?”——
split()
不是唯一可能的解决方案。)谢谢Tomalak-非常有帮助-如果你不知道答案-为什么要为你的否定回答而烦恼?@kdawg:你的标签错了,这很有帮助…为什么不修复它?问题是-如何使用split而不丢失分隔符。好的-听起来不错。在你的例子中,我应该把“”分隔符放在哪里?我明白了,我删除了+1的答案。非常好的Namida Aneskans-正是我要问的。非常感谢你,伙计:)很高兴知道“.match()方法也可以工作。再次感谢Namida Aneskans:)我想我喜欢这场比赛——因为似乎会有更少的出错空间——在一端和另一端匹配所有内容,并抓住中间的所有内容?你怎么认为?
var s = "<foo>abcd1efg</bar><foo>abc2defg</bar><foo>abc3defg</bar><foo>abc4defg</bar>"
s.match(/(<foo>.+?<\/bar>)/g)
// =>["<foo>abcd1efg</bar>", "<foo>abc2defg</bar>", "<foo>abc3defg</bar>", "<foo>abc4defg</bar>"]