给定以下字符串,我将如何提取数据选择(即 THIS-DATA)后面的引号之间的字符串。无论是使用单引号还是双引号,或者等号之前或之后是否有任何空格,我都希望它能够工作。谢谢
<td><img alt="abc" src="lib/templates/administrator/images/star.png" data-selected="THIS_DATA" title="None" class="vtip"></td>
给定以下字符串,我将如何提取数据选择(即 THIS-DATA)后面的引号之间的字符串。无论是使用单引号还是双引号,或者等号之前或之后是否有任何空格,我都希望它能够工作。谢谢
<td><img alt="abc" src="lib/templates/administrator/images/star.png" data-selected="THIS_DATA" title="None" class="vtip"></td>
可以使用 jQuery 吗?不知道为什么需要使用正则表达式。
var $el = $(".vtip");
var data = $el.attr('data-selected');
或本机javascript:
var el = document.querySelector(".vtip");
var data = el.getAttribute('data-selected');
或带有数据集的本机javascript:
var el = document.querySelector(".vtip");
var data = el.dataset.selected;
使用数据集的更多信息: https ://developer.mozilla.org/en-US/docs/DOM/element.dataset
简单的正则表达式,假设THIS_DATA
不包含引号:
var reg = /data-selected\s*=\s*["']([^"']*)["']/;
要使用:
function extractData(yourString) {
var match = str.match(yourString);
return match ? match[1] : "";
}
编辑:
或者更简单:
var data = str.replace(/.*data-selected\s*=\s*["']([^"']*)["'].*/, "$1");
您可以将字符串解析为 dom
var xmlStr = '<td><img alt="abc" src="lib/templates/administrator/images/star.png" data-selected="THIS_DATA" title="None" class="vtip"></td>';
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlStr, "text/xml");
var path = 'img/@data-selected';
var nodes = xmlDoc.evaluate(path, xmlDoc, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
var data-selected = result.textContent;