Javascript中html元素的拆分

Javascript中html元素的拆分,javascript,html,Javascript,Html,我有一组字符串,通常看起来像这样: ['string 1', 'string 2', 'string 3'] string 1字符串2字符串3 string 1字符串2字符串3 字符串1字符串2字符串3 我需要将文本(元素内部和外部/元素之间,如上所示)提取到如下数组中: ['string 1', 'string 2', 'string 3'] 有没有一种方法可以在纯Javascript中实现这一点 我试过这样的方法: ['string 1', 'string 2', 'string

我有一组字符串,通常看起来像这样:

['string 1', 'string 2', 'string 3']
string 1字符串2
字符串3
string 1字符串2
字符串3
字符串1
字符串2
字符串3
我需要将文本(元素内部和外部/元素之间,如上所示)提取到如下数组中:

['string 1', 'string 2', 'string 3']
有没有一种方法可以在纯Javascript中实现这一点

我试过这样的方法:

['string 1', 'string 2', 'string 3']
console.log(text.split(/(.*)
/g))
但它只适用于第一个:

['string1','string2','string3']
当它在最后两个变体上失败时:

['string1','string2
string3',']
[“”,“字符串1
字符串2
字符串3',“”]
纯JavaScript方法通常比正则表达式更好地解析HTML。您可以创建一个
模板
元素,将HTML加载到其中,然后使用
数组。过滤器
获取所有属于文本节点的子节点,最后返回它们的
文本内容

const html=[
'字符串1字符串2
字符串3', “字符串1字符串2
字符串3
”, '字符串1
字符串2
字符串3
' ] const getTextContent=(html)=>{ 让tmp=document.createElement('template'); tmp.innerHTML=html; const textNodes=[].filter.call(tmp.content.childNodes,n=>n.nodeType=Node.TEXT\u Node); 返回textNodes.map(o=>o.textContent); }
forEach(h=>console.log(getTextContent(h))这可能不是最好的解决方案,但我用以下代码尝试了您的树示例:

let regex = /(<([^>]+)>)/ig;
let myArray = myString.replace(regex, "-").split("-");
let regex=/(]+>)/ig;
让myArray=myString.replace(regex,“-”).split(“-”);

你可能想用其他的东西来改变这个字符,当然你也需要过滤你的数组来移除空元素,但是它工作

我会尝试用<代码>进行鬼鬼祟祟的匹配。(/(^ ^))有很多好的方法,包括正则表达式。但是我强烈鼓励你考虑jQuery。这不一定是一直以来最好的方法。IMHO…@ASDFGerte谢谢,我会使用这种方法。目前它似乎对我的情况很有效。如果你愿意,最好能给出一个完整的答案,详细说明它是如何工作的。@paulsm4我需要在Anki中使用它,因为Anki首先对Javascript没有很好的支持,所以我想保留它最小。另外,我不希望我的卡片太重。这是滥用事实,文本总是介于
(或字符串开始)和