如何使用Jquery在twitter之类的字符串中创建hashtags,url和usernames

时间:2014-02-08 07:00:38

标签: jquery regex twitter

我试图在Twitter推文字符串中使用HASHTAGS,URLS和用户名应该像使用正则表达式的链接一样。我正在尝试一些正则表达式,但我错了。请在下面找到我的代码。

$text = "Check out @Bersin tips for building a successful #talentmanagement approach http:\/\/t.co\/27rbzMUagz"

  String.prototype.parseURL = function() {
    return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&~\?\/.="]+/g, function(url) {
        return url.link(url);
    });
};

String.prototype.parseUsername = function() {
    return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(u) {
        var username = u.replace("@","")
        return u.link('http://twitter.com/'+username);
    });
}
String.prototype.parseHashtag = function() {
    return this.replace(/[#]+[A-Za-z0-9-_]+/g, function(t) {
        var tag = t.replace("#","%23")
        return t.link('http://search.twitter.com/search?q='+tag);
    });
};

    alert(text.parseURL().parseHashtag().parseUsername());

1 个答案:

答案 0 :(得分:2)

你的正则表达式中的任何地方你都在字符类中使用连字符并且它是未转义的。请记住,在字符类中,连字符只能在第1位或最后位置时才能转义。

1:所以代替:

/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&~\?\/.="]+/g

使用此:

/[A-Za-z]+:\/\/[\w-]+\.[\w:%&~?\/.="-]+/g

2:而不是:

/[@]+[A-Za-z0-9-_]+/g

使用此:

/@+[\w-]+/g

3:而不是:

/[#]+[A-Za-z0-9-_]+/g

使用此:

/#+[\w-]+/g