使用正则表达式从复杂字符串中提取主题标签

Extract hashtags from complex string using regex

我有一个疯狂的字符串,比如:

sun #plants #!wood% ##arebaba#tey   travel#blessed    #weed das#$#F!@D!AAAA

我想提取所有以#开头或前面有space的"words"(也包含特殊字符),结果如下:

[
  'sun',
  'plants',
  '!wood%',
  'arebaba',
  'tey',
  'travel',
  'blessed',
  'weed',
  'das',
  '$',
  'F!@D!AAAA'
]

如何使用正则表达式得到这个?

您可以使用 match 使用正则表达式:[^#\s]+:

var str = 'sun #plants #!wood% ##arebaba#tey   travel#blessed    #weed das#$#F!@D!AAAA';
    
var arr = str.match(/[^\s#]+/g);

console.log(arr);

RegEx Demo

只需使用 match,您就可以将第 1 组的所有匹配项放入一个数组中。

(?:^|[ #]+)([^ #]+)(?=[ #]|$)

简单!

 (?: ^ | [ #]+ )
 ( [^ #]+ )                    # (1)
 (?= [ #] | $ )

或者,如果你觉得这么简单,那就用([^ #]+)或者[^ #]+
它得到相同的东西(如 split 相反)。