我正在使用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.fm
,http://www.last.fm
和http://www.lastfm.de
一起使用。目前它仅适用于www.last.fm。
我还想让livejournal链接使用子域名链接,例如http://username.livejournal.com
我该怎么做?提前谢谢!
答案 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']")