数据模型:
var sample = {desc: "i am #Cool #cool1234 hello world", tags:["Cool", "cool1234"]}
所以我能够提出这个功能:
return sample.desc.replace(/#[a-z]+/g, "<a class=\"tags-in-details\" href=\"#/tab/myprofile-hashtags/$&\">$&</a>");
我的功能问题是它没有取代大写所以&#34;#Cool&#34;不会被链接,也不会包含数字,所以只有&#34;#cool&#34;如果没有&#34; 1234&#34; ..也会在我的href中链接我想要的网址
href"#/tab/myprofile-hashtags/Cool"
而不是
href="#/tab/myprofile-hashtags/#Cool"
答案 0 :(得分:0)
Q1)将a-z
更改为\w
以匹配a-z,A-Z,0-9和_(下划线)。如果您不想支持下划线,可以使用/#([a-zA-Z0-9]+)/g
Q2)尝试分组(/#([\w]+)/g
中的括号)
return sample.desc.replace(/#([\w]+)/g, "<a class=\"tags-in-details\" href=\"#/tab/myprofile-hashtags/$1\">$&</a>");
答案 1 :(得分:0)
var sample = {desc: "i am #Cool #cool1234 hello world #notatag", tags:["Cool", "cool1234"]};
var result = sample.desc.replace(/#(?:([a-zA-Z0-9]+))/g, function() {
var tag = RegExp.$1;
if (sample.tags.indexOf(tag) !== -1) {
return "<a class=\"tags-in-details\" href=\"#/tab/myprofile-hashtags/" + tag + "\">" + tag + "</a>";
}
return RegExp.lastMatch;
});
snippet.log(result);
&#13;
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;