首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以对从ajax()函数获取页面容器使用正则表达式吗?

可以对从ajax()函数获取页面容器使用正则表达式吗?
EN

Stack Overflow用户
提问于 2011-02-02 18:16:30
回答 2查看 1.2K关注 0票数 1

我想从某个页面的选取框标签中获取包含内容。

这是我的代码

代码语言:javascript
运行
复制
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()。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-02 18:25:45

不使用正则表达式解析HTML的原因有很多,我不会在这里一一介绍。

在您的例子中,我怀疑<marquee>标记中可能有您的正则表达式无法匹配的换行符。

试一试

代码语言:javascript
运行
复制
/<marquee[^>]*>([\s\S]*?)<\/marquee>/

看看会发生什么。

[\s\S]匹配任何字符(空格或非空格,这是弥补JavaScripts缺少“点匹配所有”模式的一种杂乱无章的做法),*?允许匹配任意次数,但要尽可能少,这样我们就不会在多个<marquee>标记之间进行匹配。

票数 0
EN

Stack Overflow用户

发布于 2011-02-02 18:29:24

使用jQuery元素构造函数而不是字符串操作来提取文本可能会更好。它更可靠,更容易阅读:

代码语言:javascript
运行
复制
var r = $('<div>' + data + '</div>').find('marquee').html();

包装div是为了确保jQuery将数据视为HTML元素,而不是选择器字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4873162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档