JQuery регулярное выражение в строке (текст и изображение) - PullRequest
0 голосов
/ 20 июня 2011

Мне нужно 2 вещи в jQuery (как в твиттере)

  1. регулярное выражение обычной ссылки
  2. проверьте, является ли ссылка изображением или веб-сайтом / doc / и т. Д. (Поэтому яможет использовать лайтбокс или что-то).

например у меня есть следующий текст из объекта json:

Привет, я создал это http://flicker.com/image и яперешел к http://www.google.com # дома # один

  1. ссылка должна быть проверена, если содержимое является изображением
  2. элемент A должен быть добавлен.
  3. хештег '#' также должен быть связан.

У меня есть немного знаний о jQuery, и я отредактировал / создал следующий скрипт (возможно, не очень хороший, но в данный момент он работает)

var username='yourname'; // set user name
var format='json'; // set format, you really don't have an option on this one
var url='http://api.twitter.com/1/statuses/user_timeline/'+username+'.'+format+'?callback=?'; // make the url
var count = 0; // Start from 0
var maxTweet = 10; // Maximum tweets (max limit is 15)
$.getJSON(url,function(tweet){ // get the tweets
    $.each( tweet, function(i, l){
        var month1 = {}; // building my month array
        month1['Jan'] = '01';
        month1['Feb'] = '02';
        month1['Mar'] = '03';
        month1['Apr'] = '04';
        month1['May'] = '05';
        month1['Jun'] = '06';
        month1['Jul'] = '07';
        month1['Aug'] = '08';
        month1['Sep'] = '09';
        month1['Oct'] = '10';
        month1['Nov'] = '11';
        month1['Dec'] = '12';
        var d = tweet[count].created_at; // getting date
        var d = d.split(" "); // Splitting date
        var e = tweet[count].created_at.split(" "); // Splitting date
        var a = d[1]; // Month
        var month = month1[a]; // still month
        var d = d[5] + '-' + month + '-' + d[2] + 'T' + d[3] + 'Z' + d[4]; // date like 30-05-2011T13:45:45Z+1000
        var date = prettyDate(d); // using prettyDate founded on the Web
        if(count < maxTweet){
        if(date = 'undefined'){
            var date = e[2] + '-' + month + '-' + e[5] + ' om ' + e[3];
        } // if it is out of range
    $("#twitter .slides_container").append('<p> <a href="http://twitter.com/#!/' + tweet[count].user.name + '" target="_blank"><img src="' + tweet[count].user.profile_image_url + '" alt="' + tweet[count].user.name + '" class="twitpic"></a> ' + tweet[count].text + '<br /><em>' + date + '</em></p>')
}
    });
count++;
});

твитнуть [count] .text = где мне нужно регулярное выражение

отредактировано (count ++;)

1 Ответ

0 голосов
/ 24 мая 2012

Вы можете найти что-то вроде этого полезным, чтобы связать свои твиты.

html = tweet[count].text
    .replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@@#\/%?=~_|!:,.;]*[-A-Z0-9+&@@#\/%=~_|])/ig, '<a href="$1" target="_blank" rel="nofollow">$1</a>')
    .replace(/(?:^| )[@]+(\w+)/ig, ' @<a href="http://www.twitter.com/$1" class="user" target="_blank" rel="nofollow">$1</a>')
    .replace(/(?:^| )[#]+([\w\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0600-\u06ff]+)/ig, ' <a href="http://search.twitter.com/search?q=&tag=$1&lang=all" class="hash" target="_blank" rel="nofollow">#$1</a>');

К сожалению, вы не всегда знаете, что находится в конце URL, не заходя туда (что вам нужносделать для реализации функции лайтбокса), если вы не сделаете некоторые предположения, например, если ссылка содержит .jpg и т. д.

...