jQuery и регулярное выражение для добавления значков для конкретных ссылок - PullRequest
1 голос
/ 23 апреля 2010

Я использую jQuery для добавления значков к конкретным ссылкам, например, значок myspace для сайтов, начинающихся с http://myspace.com и т. д.

Однако я не могу понять, как использовать регулярные выражения (если это даже возможно здесь), чтобы 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

Как я могу это сделать? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 23 апреля 2010

Во-первых, ответ Gumbo лучше всего, если вы хотите строгое соответствие, регулярное выражение - путь. Если вы немного слабее и вам просто нужно соответствовать, вы можете использовать селекторы. Для первого вы можете использовать несколько селекторов:

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

Наконец, вы можете переключиться на , содержащий селектор , например:

$("a[href*='livejournal.com']")
1 голос
/ 23 апреля 2010

Вы можете сделать что-то вроде этого:

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");
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...