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 に答える