如果存在另一个特定属性,则匹配标记中的属性的JavaScript正则表达式
JavaScript regex matching an attribute in tag if another specific attribute is present
我有一个字符串模式:
<div content="[...]" class="[...]">[...]</div>
<div content="website" [...] class="_type">[...]</div>
<dic content="[...]" class="[...]">[...]</div>
我的问题是如何在这里使用代码获得"网站"文本。
I have try:
/content="(.+?)".*?class="_type"/g
但结果出乎意料:[...]
.
这是一个可以获得子字符串的正则表达式。
var re = /<(?=[^<>]*'bclass="_type")div'b[^<>]*content="([^"]*)"/ig;
正则表达式匹配任何包含<div>
且包含content="
和class="_type"
的字符串。结果存储在捕获的组1中。注意,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"/>
如果您不知道HTML中会有什么样的分隔符,那么这会使问题变得更大。但是,仍然有可能: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/>";
}
}
<div id="e"/>
相关文章:
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- javascript正则表达式,用于编辑元素内部的css样式属性
- 与任何元素的 .innerHTML 属性匹配的 JavaScript 正则表达式
- 使用正则表达式删除所有 html 属性(替换)
- Javascript 属性名称上的正则表达式
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效
- 如何生成一个正则表达式,用以这种方式命名的类的属性值替换标记{{name}}
- 使用正则表达式matchget-error无法读取属性“”;0”;从null
- 数据属性中的Javascript正则表达式
- 如何使用正则表达式从javascript/jquery中的属性值中提取文本
- 为什么我的 Javascript 中的两个正则表达式文本在一个属性上有所不同
- 如何编写将获取属性文本的正则表达式
- JavaScript正则表达式匹配不在特定属性中的任何内容
- 属性值的正则表达式
- JavaScript 用具有特定 ID 的正则表达式 img 标记替换,但其他属性可以是任何属性
- 正则表达式第一个结果($ 1)替换为变量的属性
- JavaScript正则表达式:找到一个标签并获取一些属性值
- 使用正则表达式时出现 Javascript 错误 - 对象不支持此属性或方法
- 与正则表达式一起使用时无法读取属性长度 null 错误
- 具有 CSS 属性的正则表达式