我想从某个页面的选取框标签中获取包含内容。
这是我的代码
var myurl = "http://www.somewhere.com/somepage.html";
var patt = /.+<marquee.+>(.+)<\/marquee>.+/;
$.ajax({
url: myurl,
success: function(data){
var r = patt.exec(data);
console.debug(r[1]);
},
});
我发现,变量r是空的。
我的错误是什么?
PS。我做了一个chrome扩展,所以它允许我在其他域中调用ajax()。
发布于 2011-02-02 18:25:45
不使用正则表达式解析HTML的原因有很多,我不会在这里一一介绍。
在您的例子中,我怀疑<marquee>
标记中可能有您的正则表达式无法匹配的换行符。
试一试
/<marquee[^>]*>([\s\S]*?)<\/marquee>/
看看会发生什么。
[\s\S]
匹配任何字符(空格或非空格,这是弥补JavaScripts缺少“点匹配所有”模式的一种杂乱无章的做法),*?
允许匹配任意次数,但要尽可能少,这样我们就不会在多个<marquee>
标记之间进行匹配。
发布于 2011-02-02 18:29:24
使用jQuery元素构造函数而不是字符串操作来提取文本可能会更好。它更可靠,更容易阅读:
var r = $('<div>' + data + '</div>').find('marquee').html();
包装div是为了确保jQuery将数据视为HTML元素,而不是选择器字符串。
https://stackoverflow.com/questions/4873162
复制相似问题