2

我有这个漂亮的函数,但我需要对其进行自定义以仅返回与正则表达式匹配的项目数组。所以结果#hash1234, #sweetthing,#something_notimportant 是有没有办法使用这个函数来做到这一点?

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);
    });
};

var string = '#hash1234 this is another hash: #sweetthing and yet another #something_notimportant';       
$('#result').html(string.parseHashtag());
4

3 回答 3

3

.match方法返回一个包含所有匹配项的数组,或者null如果没有匹配项。

因此,如果null对于不匹配的情况是可接受的回报,那么:

String.prototype.parseHashtag = function() {
    return this.match(/[#]+[A-Za-z0-9-_]+/g);
}

或者,如果您希望返回一个空数组或其他不匹配的默认值:

String.prototype.parseHashtag = function() {
    return this.match(/[#]+[A-Za-z0-9-_]+/g) || [];
}
于 2012-11-06T03:39:59.240 回答
2

简单的:

String.prototype.findHashTags = function() {
    return this.match(/[#]+[A-Za-z0-9-_]+/g);
};

string.findHashTags()
// returns ["#hash1234", "#sweetthing", "#something_notimportant"]

图案完全一样。

于 2012-11-06T03:35:51.317 回答
0

使用匹配。

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

};

var string = '#hash1234 this is another hash: #sweetthing and yet another #something_notimportant';       
$('#result').html(string.parseHashtag());​
于 2012-11-06T04:01:31.817 回答