xml/html属性的javascript正则表达式
我似乎无法构建一个好的正则表达式(javascript)来从xml节点提取每个属性。比如说,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
<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'));
}