返回匹配的子串的数组

时间:2012-11-06 03:31:27

标签: jquery regex prototype

我有这个漂亮的功能,但我需要自定义它以返回与正则表达式匹配的项目数组。所以结果是#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());

3 个答案:

答案 0 :(得分:3)

.match method会返回所有匹配项的数组,如果没有匹配项,则返回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) || [];
}

答案 1 :(得分:2)

简单:

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

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

模式完全相同。

答案 2 :(得分: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());​