Javascript outerHTML.search(/\>;*\<;/);//外部TML上的正则表达式搜索收益率';错误';有时索引

Javascript outerHTML.search(/\>;*\<;/);//外部TML上的正则表达式搜索收益率';错误';有时索引,javascript,regex,outerhtml,Javascript,Regex,Outerhtml,想要通过从表的outerHTML中提取来获取表定义的HTML,查找表的索引吗 正则表达式怎么了 正则表达式是解析HTML的错误工具。(.)它们可以是HTML解析器的一部分,但单个表达式无法完成此任务 要获取表定义的HTML吗 我会采取更直接的方法:表已经被解析,所以只需克隆它,从克隆中删除所有文本节点,然后(如果需要HTML而不仅仅是节点树)获取它的outerHTML: function extractStructure(element) { const clone = element.

想要通过从表的outerHTML中提取来获取表定义的HTML,查找表的索引吗 正则表达式怎么了

正则表达式是解析HTML的错误工具。(.)它们可以是HTML解析器的一部分,但单个表达式无法完成此任务

要获取表定义的HTML吗

我会采取更直接的方法:表已经被解析,所以只需克隆它,从克隆中删除所有文本节点,然后(如果需要HTML而不仅仅是节点树)获取它的
outerHTML

function extractStructure(element) {
    const clone = element.cloneNode(true);
    removeText(clone);
    return clone.outerHTML;
}
function removeText(element) {
    let child = element.firstChild;
    while (child) {
        let next = child.nextSibling;
        if (child.nodeType === 1) { // Element
            removeText(child);
        } else if (child.nodeType === 3) { // Text
            element.removeChild(child);
        }
        child = next;
    }
}
函数提取结构(元素){
const clone=element.cloneNode(true);
removeText(克隆);
返回clone.outerHTML;
}
函数removeText(元素){
让child=element.firstChild;
while(儿童){
让next=child.nextSibling;
if(child.nodeType==1){//元素
removeText(儿童);
}如果(child.nodeType==3){//Text
元素。removeChild(子元素);
}
孩子=下一个;
}
}
log(extractStructure(document.getElementById(“t1”));
log(extractStructure(document.getElementById(“t2”))

122
12233344445555555
aaaaaaaabbbbbbbbccccccccccddd
ddddddddddddddd 122 12233344445555555 aaaaaaaabbbbbbbbccccccccccddd
ddddddddddddddd
正则表达式怎么了

正则表达式是解析HTML的错误工具。(.)它们可以是HTML解析器的一部分,但单个表达式无法完成此任务

要获取表定义的HTML吗

我会采取更直接的方法:表已经被解析,所以只需克隆它,从克隆中删除所有文本节点,然后(如果需要HTML而不仅仅是节点树)获取它的
outerHTML

function extractStructure(element) {
    const clone = element.cloneNode(true);
    removeText(clone);
    return clone.outerHTML;
}
function removeText(element) {
    let child = element.firstChild;
    while (child) {
        let next = child.nextSibling;
        if (child.nodeType === 1) { // Element
            removeText(child);
        } else if (child.nodeType === 3) { // Text
            element.removeChild(child);
        }
        child = next;
    }
}
函数提取结构(元素){
const clone=element.cloneNode(true);
removeText(克隆);
返回clone.outerHTML;
}
函数removeText(元素){
让child=element.firstChild;
while(儿童){
让next=child.nextSibling;
if(child.nodeType==1){//元素
removeText(儿童);
}如果(child.nodeType==3){//Text
元素。removeChild(子元素);
}
孩子=下一个;
}
}
log(extractStructure(document.getElementById(“t1”));
log(extractStructure(document.getElementById(“t2”))

122
12233344445555555
aaaaaaaabbbbbbbbccccccccccddd
ddddddddddddddd 122 12233344445555555 aaaaaaaabbbbbbbbccccccccccddd
ddddddddddddddd
t1上的用户正在返回生产线

<table  id="t1" border="1">         
    <thead>

旁注:在这种情况下,可能不是最好的方法是模式匹配(见T.J.Crowder的答案)

t1上的用户正在返回线路

<table  id="t1" border="1">         
    <thead>

旁注:在这种情况下,可能不是最好的方法是模式匹配(参见T.J.Crowder的答案)

这个正则表达式应该找到什么?为什么还要使用正则表达式而不是DOM方法呢?我只想在table元素的结尾“>”之后找到第一个html标记的开头,第一个标记应该以“So…”打开,类似于
table.nextSibling
?这个正则表达式应该找到什么?为什么还要使用正则表达式而不是DOM方法呢?我只想在table元素的结尾“>”之后找到第一个html标记的开头,第一个标记应该以“So…”打开,类似于
table.nextSibling
?为什么要转义
?它在正则表达式中没有特别的意义。谢谢,这对我来说现在起作用了。我使用outerHTML是因为这是源代码,我知道当出现“如果你解决了你的问题,请不要忘记投票并接受,这样面对相同问题的人可以使用它”时,我就退出了。别忘了看t.J.的评论。@Heinz-“我使用outerHTML是因为这是源代码”不,它不是源代码。它是通过遍历元素并从DOM中为这些元素构建HTML而创建的新字符串。这与创建表的原始源不一样(如果有原始源,而不是动态创建)。@T.J.Crowder-我恐怕我不完全理解你在告诉我什么。对我来说,问题是,只要我在outerHTML中找到我在开始的“”括号中写的所有内容,这对我来说都没问题。为什么
会被转义?它在正则表达式中没有特别的意义。谢谢,这对我来说现在起作用了。我使用outerHTML是因为这是源代码,我知道当出现“如果你解决了你的问题,请不要忘记投票并接受,这样面对相同问题的人可以使用它”时,我就退出了。别忘了看t.J.的评论。@Heinz-“我使用outerHTML是因为这是源代码”不,它不是源代码。它是通过遍历元素并从DOM中为这些元素构建HTML而创建的新字符串。这与创建表的原始源不一样(如果有原始源,而不是动态创建)。@T.J.Crowder-我恐怕我不完全理解你在告诉我什么。对我来说,重点是,只要我在outerHTML中找到我在开头的括号中写的所有内容,这对我来说就可以了。