从html标记格式化的String中提取键值对

时间:2015-03-20 07:29:44

标签: javascript

我有这个字符串:

编辑 - 我无权访问html / dom / jquery

<meta charset="UTF-8" data-slide-length="5" data-prio="HIGH" data-freq="2"> 我想提取自定义属性的键值对(data-)。

我不知道从哪里开始使用正则表达式,我似乎无法找到足够接近的示例供我理解。

所需输出:{slide-length:5,prio:“HIGH”,freq:2}

谢谢

2 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,即使你得到as字符串,你也可以创建一个内存中的DOM元素,然后访问你需要的属性:

var text = '<meta charset="UTF-8" data-slide-length="5" data-prio="HIGH" data-freq="2">'

var temp = document.createElement("div");
temp.innerHTML = text;

alert(temp.firstChild.dataset.slideLength) // 5

收集完所需信息后,您可以将temp设为null

但是,如果由于某种原因你不能这样做,你正在寻找的正则表达式将类似于/(\S+)="(.*?)"/g,然后你需要迭代字符串:

var text =''

var m, re = /(\S+)="(.*?)"/g;

while (m = re.exec(text)) {
  alert("key:" + m[1] + " value: " + m[2])  
}

从这里你可以创建你的对象。

答案 1 :(得分:0)

如果您知道属性名称,解决方法可以将此文本用作XML并使用解析器读取数据属性。