jQuery和regex用于向特定链接添加图标?

时间:2010-04-23 10:37:50

标签: jquery regex

我正在使用jQuery将图标添加到特定链接,例如以http://myspace.com等开头的网站的myspace图标。

然而,我无法弄清楚如何使用正则表达式(如果在这里甚至可能),使jQuery识别链接是否带有“www”。 (一般来说,我对正则表达式非常不满意。)

以下是两个例子:

    $("a[href^='http://www.last.fm']").addClass("lastfm").attr("target", "_blank");
    $("a[href^='http://livejournal.com']").addClass("livejournal").attr("target", "_blank");

他们工作正常,但我现在希望last.fm链接与http://last.fmhttp://www.last.fmhttp://www.lastfm.de一起使用。目前它仅适用于www.last.fm。

我还想让livejournal链接使用子域名链接,例如http://username.livejournal.com

我该怎么做?提前谢谢!

2 个答案:

答案 0 :(得分:1)

你可以这样做:

var icons = {
    "last.fm": "lastfm",
    "lastfm.de": "lastfm",
    "livejournal.com": "livejournal"
};
$("a[href]").each(function(){
    var match;
    if ((match = this.href.match(/^https?:\/\/(?:\w+\.)*(\w+\.\w+)(?:$|\/)/)) && icons.hasOwnProperty(match[1])) {
        $(this).addClass(icons[match]).attr("target", "_blank");
    }
});

答案 1 :(得分:1)

首先,Gumbo的答案是最好的,如果你想要严格的匹配,正则表达是要走的路。如果你有点宽松,只需要匹配,你可以坚持选择器。首先,您可以使用多个选择器:

$("a[href^='http://last.fm'], a[href^='http://www.last.fm'], a[href^='http://www.lastfm.de']")

最后,您可以切换到contains selector,如下所示:

$("a[href*='livejournal.com']")