我有一个字符串(一条推文),如下所示:
var str = "blah blah blah blah http://example.com blah blah #something blah blah https://example.com blah blah @person"
我想挑选出所有应该是链接的内容并用链接标签将其包裹起来。需要在字符串中找到以下 4 个内容:
- 任何以
@开头的单词
- 任何以
#
开头的单词 - 任何以
http://
开头的单词 - 任何以
https://
开头的单词
所以我想它会有点像这样:
str.replace(regexForHashtag, '<a href="' + linkText + '">" + linkText + "</a>");
最佳答案
基于Parsing Twitter Usernames, Hashtags and URLs with JavaScript :
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);
});
};
String.prototype.parseTweet = function() {
return this.parseURL().parseUsername().parseHashtag();
};
可以这样调用:
var str = "blah blah blah blah http://example.com blah blah #something blah blah https://example.com blah blah @person"
str.parseTweet();
// or:
// str.parseURL
// str.parseUsername
// str.parseHashtag
关于javascript - 查找并替换特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29286763/