Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xml/html属性的javascript正则表达式_Javascript_Regex - Fatal编程技术网

xml/html属性的javascript正则表达式

xml/html属性的javascript正则表达式,javascript,regex,Javascript,Regex,我似乎无法构建一个好的正则表达式(javascript)来从xml节点提取每个属性。比如说, <Node attribute="one" attribute2="two" n="nth"></node> 。。。 任何帮助都将不胜感激。谢谢正则表达式是/\w+=“+”/g(注意全局的g) 您现在可以在firebug/chrome控制台上进行以下操作: var matches = '<Node attribute="one" attribute2="two" n="n

我似乎无法构建一个好的正则表达式(javascript)来从xml节点提取每个属性。比如说,

<Node attribute="one" attribute2="two" n="nth"></node>
。。。 任何帮助都将不胜感激。谢谢

正则表达式是
/\w+=“+”/g
(注意全局的
g

您现在可以在firebug/chrome控制台上进行以下操作:

var matches = '<Node attribute="one" attribute2="two" n="nth"></node>'.match(/\w+="\w+"/g)
var matches=''.match(/\w+=“\w+”/g)

我认为您可以使用以下方法获得它。您需要第二个和第三个匹配组

<[\w\d\-_]+\s+(([\w\d\-_]+)="(.*?)")*>

试试这个~

  <script type="text/javascript">
    var myregexp = /<node((\s+\w+=\"[^\"]+\")+)><\/node>/im;
    var match = myregexp.exec("<Node attribute=\"one\" attribute2=\"two\" n=\"nth\"></node>");
    if (match != null) {
    result = match[1].trim();
    var arrayAttrs = result.split(/\s+/);
    alert(arrayAttrs);}
  </script>


var myregexp=/如果您错过了Kerrek的评论:

不能用正则表达式解析XML。 链接:

可以通过迭代节点的attributes属性来获取节点的属性:

function getAttributes(el) {
  var r = [];
  var a, atts = el.attributes;

  for (var i=0, iLen=atts.length; i<iLen; i++) {
    a = atts[i];
    r.push(a.name + ': ' + a.value);
  }
  alert(r.join('\n'));
}
函数getAttributes(el){ var r=[]; 变量a,atts=el.属性;
对于(var i=0,iLen=atts.length;是的。你为什么不使用XML解析器库?@jfriend00-可能是因为浏览器已经有了内置的XML解析器和合适的DOM方法。我不确定我想要XML解析器库的开销,而且我很少会有格式良好的XML。我实际解析git生成的差异。一个d如果属性值有空格,它将失败。请参阅第一条注释中的链接。不,它没有。问题是“一个好的正则表达式……可以从xml节点提取每个属性”,而不是一个非常有限的示例。@Pablo,也许你应该先尝试一下,然后再说你已经修复了任何东西。;-)@Qtax,oops,把转义留在那里了。谢谢你的更正人:)@Pablo,你仍然应该尝试它,即使是在你有限的例子上;-)这在很多情况下都不起作用,例如如果有命名空间,例如
,或者属性名包含冒号(:)或句点(.)字符(不包括在正则表达式的适当部分中)或该值包含双引号字符。如果可能,我肯定会使用该字符而不是正则表达式+1。很遗憾,属性值中的一个空格会破坏这一点。也许我需要先替换其间的空格“”使用下划线,然后在拆分数组后,返回空格?
function getAttributes(el) {
  var r = [];
  var a, atts = el.attributes;

  for (var i=0, iLen=atts.length; i<iLen; i++) {
    a = atts[i];
    r.push(a.name + ': ' + a.value);
  }
  alert(r.join('\n'));
}