我在哪里放我的正则表达式

时间:2013-08-10 03:26:32

标签: jquery regex rss

好吧我在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.*$  

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

即便如此,我仍然需要弄清楚如何删除“金属价格(日期) - ” 从这两行也是如此。

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

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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();
        });
    }



});