我正在尝试在HTML页面中查找介于<nobr>
和</nobr>
标记之间的所有项目。
编辑:( nobr是一个例子。我需要在随机字符串之间找到内容,而不是标签)
我试过这个
var match = /<nobr>(.*?)<\/nobr>/img.exec(document.documentElement.innerHTML);
alert (match);
但它只发生一次。 +它出现两次,一次是<nobr></nobr>
标签,一次没有它们。我只需要没有标签的版本。
答案 0 :(得分:5)
使用DOM
var nobrs = document.getElementsByTagName("nobr")
然后你可以遍历所有的nobrs并提取innerHTML或对它们应用任何其他动作。
答案 1 :(得分:5)
你需要在循环中完成
var match, re = /<nobr>(.*?)<\/nobr>/img;
while((match = re.exec(document.documentElement.innerHTML)) !== null){
alert(match[1]);
}
答案 2 :(得分:2)
(因为我不能评论拉斐尔的正确答案......)
exec
正在做它应该做的事情 - 找到第一个匹配项,在match
对象中返回结果,然后为下一个exec
调用进行设置。 match
对象包含(在索引0处)整个正则表达式匹配的整个字符串。在后续的时隙中是由带括号的子组匹配的字符串的位。因此match[1]
包含在您的示例中与“(。*?)”匹配的字符串的位。
答案 3 :(得分:1)
你可以使用
while (match = /<nobr>(.*?)<\/nobr>/img.exec("foo <nobr> hello </nobr> bar <nobr> world </nobr> foobar"))
alert (match[1]);
答案 4 :(得分:1)
如果您使用的字符串不是xml元素,并且您正在使用正则表达式,则可以通过包围来解释您获得的返回值。 .exec返回整个匹配字符串,后跟括号表达式的内容。
如果您的文档包含:
This is out.
Bzz. This is in. unBzz.
然后
/Bzz.(.*?)unBzz./img.exec(document.documentElement.innerHTML)
会给你'Bzz。这是.unBzz。'在返回的数组的元素0和'这是在。'在元素1中。试图显示整个数组给出了逗号分隔列表,因为这是JavaScript尝试显示它的方式。
所以
alert($match[1]);
是你所追求的。
答案 5 :(得分:1)
它需要步骤,但你可以像这样做
match = document.documentElement.innerHTML.match(/<nobr>(.*?)<\/nobr>/img)
alert(match)//includes '<nobr>'
match_length = match.length;
for (var i = 0; i < match_length; i++)
{
var match2 = match[i].match(/<nobr>(.*?)<\/nobr>/im);//same regex without the g option
alert(match2[1]);
}