不使用#从字符串中提取所有主题标签

时间:2017-08-25 05:05:19

标签: javascript regex hashtag

我从这样的字符串中提取主题标签:

const mystring = 'huehue #arebaba,saas #ole #cool asdsad #aaa';
const hashtags = mystring.match(/#\w+/g) || [];
console.log(hashtags);

输出结果为:

['#arebaba', '#ole', '#cool', '#aaa']

我的正则表达式应如何匹配:

['arebaba', 'ole', 'cool', 'aaa']

我不想使用地图功能!

2 个答案:

答案 0 :(得分:3)



const mystring = 'huehue #arebaba,saas #ole #cool asdsad #aaa';
var regexp = /#(\w+)/g;
var match = regexp.exec(mystring);
while (match != null){
  console.log(match[1])
  match = regexp.exec(mystring)
} 




编辑可以缩短代码。但是,不是你的正则表达式可以解决你的问题,而是选择正确的方法。



var mystring = 'huehue #arebaba,saas #ole #cool asdsad #aaa',
    match;
var regexp = /#(\w+)/g;    
while (match = regexp.exec(mystring))
  console.log(match[1]);




答案 1 :(得分:2)

您已经匹配了多个子字符串,并且您知道前面有#,所以只需删除它:



const mystring = 'huehue #arebaba,saas #ole #cool asdsad #aaa';
const hashtags = mystring.match(/#\w+/g).map(x => x.substr(1)) || [];
console.log(hashtags);