正则表达式包含在描述中的锚匹配主题标签

时间:2015-08-03 06:11:46

标签: javascript regex

数据模型:

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"

问题

  1. 什么应该是正则表达式所以大写字母和数字将被链接

  2. 如何删除&#39; #sign&#39;在URL中(..URL / Cool而不是..URL / #Cool)

  3. 我的应用中的截图:

    enter image description here

2 个答案:

答案 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>");

JSFiddle demo

答案 1 :(得分:0)

&#13;
&#13;
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;
&#13;
&#13;