0

好的,我在http://jsfiddle.net/Duayne/nFnEF/做了一个小提琴

我终于想出了如何组合我的脚本片段并删除链接:

function setRSSFeed() {
    $('#test').rssfeed('http://www.riogrande.com/rss', {
        limit: 4,
        sort: 'title',
        sortasc: true,
        header: false,
        date: false,
        content: false,
        snippet: false
    }, function () {
        $('#test h4 a').each(function () {
            var $link = $(this);
            $link.after($link.text());
            $link.remove();
        });
    });
}  

现在我需要插入一个正则表达式

^.*\b(Gold|Silver)\b.*$  

所以我只会得到第一行和第四行。我在哪里把这一行放在我的代码中?

即便如此,我仍然必须弄清楚如何
从这两行中删除“(日期)的金属价格 - ”。

任何帮助...任何人...?

4

2 回答 2

0

http://jsfiddle.net/nabil_kadimi/nFnEF/3/

您可以将正则表达式放在 $.filter 中,如下所示:

$(document).ready(function () {
    setRSSFeed();

    function setRSSFeed() {
        $('#test').rssfeed('http://www.riogrande.com/rss', {
            limit: 4,
            sort: 'title',
            sortasc: true,
            header: false,
            date: false,
            content: false,
            snippet: false
        }, function () {
            $('#test h4 a').each(function () {
                var $link = $(this);
                $link.after($link.text());
                $link.remove();
            });
            $('#test h4').filter(function () {
                    return !$(this).text().match('^(Gold|Silver)');
            }).remove();
        });
    }



});
于 2013-08-10T03:36:18.707 回答
0

这是使用正则表达式仅获取两条匹配行的一种方法:

        $('#test h4 a').each(function () {
            var $link = $(this),
                text = $link.text();
            if (/^.*\b(Gold|Silver)\b.*$/.test(text))
                $link.after(text);
            $link.remove();
        });

也就是说,在您的.each()循环中,您每次都可以删除链接,但在此之前,只有在项目匹配时才添加文本。

演示:http: //jsfiddle.net/nFnEF/1/

要删除“金属价格...”部分,您可以.replace()使用不同的正则表达式来捕获您要保留的两个部分:

        var re = /^(Gold|Silver)[^-]+-\s?([\d.]+)$/;
        $('#test h4 a').each(function () {
            var $link = $(this),
                text = $link.text();
            if (re.test(text))
                $link.after(text.replace(re,"$1 $2"));
            $link.remove();
        });

括号中的模式部分正在捕获匹配项,您可以在替换字符串中按数字引用这些匹配项。

演示:http: //jsfiddle.net/nFnEF/6/

于 2013-08-10T03:31:58.137 回答