通过hashtag拆分字符串并使用jQuery保存到数组中?

我有一个var,它有一个包含一系列单词的字符串,其中一些有标签,例如:

var words = "#hashtagged no hashtag #antoherhashtag"; 

我想将每个hashtagged字保存到一个数组中,有点像:

 var tagslistarr = words.split(' '); 

但我不确定如何让#和空间包围的角色。

这有什么特别的方法吗? 是否有一些ASCII字符我打算用来识别这个?

DEMO

 var words = "#hashtagged no hashtag #antoherhashtag"; var tagslistarr = words.split(' '); var arr=[]; $.each(tagslistarr,function(i,val){ if(tagslistarr[i].indexOf('#') == 0){ arr.push(tagslistarr[i]); } }); console.log(arr); 

tagslistarr = words.split(' ')将带有空格的单词从新数组中拆分

$ .each()循环遍历tagslistarr数组的每个值

if(tagslistarr[i].indexOf('#') == 0)检查是#是在开头的,如果这个条件为true它将它添加到arr数组中

 var words = "#hashtagged no hashtag #antoherhashtag"; var tagslistarr = words.match(/#\S+/g); //["#hashtagged", "#antoherhashtag"] 
 var tmplist = words.split(' '); var hashlist = []; var nonhashlist = []; for(var w in tmplist){ if(tmplist[ w ].indexOf('#') == 0) hashlist.push(tmplist[ w ]); else nonhashlist.push(tmplist[ w ]); } 
 var words = "#hashtagged no hashtag #antoherhashtag"; var tagslistarr = words.match(/(^|\s)#([^ ]*)/g); 

使用纯JavaScript时,正则表达式非常简单:

 var str = "Lorem #ipsum dolor sit #amet"; var hashArray = (str.match(/#(\w+)/g)); console.log(hashArray); // => [ '#ipsum', '#amet' ] console.log(Array.isArray(hashArray)); // => true 

https://repl.it/C8GJ

如果你需要处理变音符号:

 var str = "Loröm #ipsöm dolor sit #amöt"; var hashArray = (str.match(/#([A-zÀ-ÖØ-öø-ÿ]+)/g)); console.log(hashArray); // => [ '#ipsöm', '#amöt' ] console.log(Array.isArray(hashArray)); // => true 

https://repl.it/@ryanpcmcquen/QuickwittedParallelLemming