我有一个字符串模式:
<div content="[...]" class="[...]">[...]</div>
<div content="website" [...] class="_type">[...]</div>
<dic content="[...]" class="[...]">[...]</div>
我的问题是我如何使用此处的代码获取“网站”文字。
我试过了:
/content="(.+?)".*?class="_type"/g
但结果不是预期的:[...]
。
答案 0 :(得分:1)
这是一个可以获取子字符串的正则表达式。
var re = /<(?=[^<>]*\bclass="_type")div\b[^<>]*content="([^"]*)"/ig;
正则表达式匹配任何包含<div>
并且还包含content="
的{{1}}字符串。结果存储在捕获的组1中。请注意,class="_type"
可以在class="_type"
之前或之后。
代码可以是:
content="{our string}"
var re = /<(?=[^<>]*\bclass="_type")div\b[^<>]*content="([^"]*)"/ig;
var str = '<div content="[...]" class="[...]">[...]</div>\n<div content="website" [...] class="_type">[...]</div>\n<dic content="[...]" class="[...]">[...]</div>';
var m;
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
document.getElementById("r").innerHTML += m[1] + "<br/>";
}
<div id="r"/>
var re = /<(?=[^<>]*\bclass=['"]?_type\b['"]?)div\b[^<>]*content=(?:["']([^<]*?)["']|(\S+))/ig;
var str = '<div content="[...]" class="[...]">[...]</div>\n<div content=\'[...]\' class=\'[...]\'>[...]</div>\n<div content="web site" [...] class="_type">[...]</div>\n<dic content="[...]" class="[...]">[...]</div>\n<dic content=[...] class=[...]>[...]</div>\n<dic content=\'[...]\' class=\'[...]\'>[...]</div>\n<div content=\'web site\' [...] class=\'_type\'>[...]</div>\n<div content=website [...] class=_type>[...]</div>';
var m;
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
if (m[1] === undefined) {
document.getElementById("e").innerHTML += m[2] + "<br/>";
}
else {
document.getElementById("e").innerHTML += m[1] + "<br/>";
}
}