2014-09-13 97 views
0

我有这样的评论表格单元格:正则表达式来提取HTML注释属性

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

有类似模式的意见,其中属性的值不同许多表格单元格,但属性总是相同(FieldName,FieldInternalName和FieldType)。

如何在这种类型的评论中使用REGEX提取FieldInternalname? 有没有一种非正则的方式呢?

请帮忙!

回答

2

使用正则表达式如下从组索引1

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

DEMO

> 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 
+0

这似乎工作,但我如何在JavaScript上运行此正则表达式评论以提取FieldInternalName的值? – Athapali 2014-09-13 14:36:26

+0

@SariksaThapa更新... – 2014-09-13 14:44:58

1

得到FieldInternalName的价值有没有这样做太的非正则表达式的方式?

commentNode.data; 

评论节点有的8节点类型,所以如果你不知道这将是该小区的孩子,你可以写这样的函数

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>