regex来提取html注释属性

regex to extract html comment attribute

本文关键字:注释 属性 html 提取 regex      更新时间:2023-09-26

我有一个带有以下注释的表格单元格:

 <!-- FieldName="Predicted Process Equipment Potable Usage"
             FieldInternalName="PredictedProcessEquipmentPotable"
             FieldType="SPFieldNumber" -->

有许多具有相似模式注释的表单元格,其中属性的值不同,但属性始终相同(FieldName、FieldInternalName和FieldType)。

如何使用REGEX提取此类型注释中的FieldInternalname?是否也有非正则表达式的方法?

请帮忙!

使用下面的正则表达式,从组索引1中获取FieldInternalName的值。

<!--['S's]*?FieldInternalName="([^"]*)"['S's]*?-->

演示

> var m = 'foo'n <!-- FieldName="Predicted Process Equipment Potable Usage"'n            FieldInternalName="PredictedProcessEquipmentPotable"'n           FieldType="SPFieldNumber" -->';
undefined
> console.log(/<!--['S's]*?FieldInternalName="([^"]*)"['S's]*?-->/.exec(m)[1]);
PredictedProcessEquipmentPotable

是否也有非正则表达式的方法?

commentNode.data;

Comment节点具有8nodeType,因此,如果您不知道它将是单元的哪个子级,则可以编写类似以下的函数

function getNodesByType(node, type, childrenOnly) {
    var i,
        o = [];
    if (node.childNodes && node.childNodes.length)
        for (i = 0; i < node.childNodes.length; ++i)
            if (node.childNodes[i].nodeType === type)
                o.push(node.childNodes[i]);
            else if (!childrenOnly && node.childNodes[i].nodeType === 1)
                Array.prototype.push.apply(
                    o,
                    getNodesByType(node.childNodes[i], type, childrenOnly)
                );
    return o;
}

并调用getNodesByType(yourTdElement, 8, true);以获得注释节点的数组,这些节点是<td> 的直接子级