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