javascript从字符串中提取哈希标记

javascript从字符串中提取哈希标记,javascript,regex,Javascript,Regex,我从后端接收到一个字符串,我需要提取hashtags。标记是以这两种形式之一编写的 type 1. #World is a #good #place to #live. type 2. #World#place#live. 我通过:str.replace(/#(\S*)/g 如何将第二种格式更改为空格分隔的标记以及格式一 基本上我想把格式2转换成 #World#place#live. 到 您可以使用正则表达式\w+: var str=` 第一类:世界是一个美好的生活之地。 类型2.#世界

我从后端接收到一个字符串,我需要提取hashtags。标记是以这两种形式之一编写的

type 1. #World is a #good #place to #live.
type 2. #World#place#live.
我通过:
str.replace(/#(\S*)/g
如何将第二种格式更改为空格分隔的标记以及格式一

基本上我想把格式2转换成

 #World#place#live.

您可以使用正则表达式
\w+

var str=`
第一类:世界是一个美好的生活之地。
类型2.#世界#地方#生活`
var matches=str.match(/#\w+/g)

console.log(matches)
如何使用regex
/#([\w]+\b)/gm
并通过空格
连接,如下面所示,从字符串中提取
#hastags
您可以使用@Wiktor注释的
str.replace(/\b.[\s.\s++/g,$&)

函数findHashTags(str){
var regex=/#([\w]+\b)/gm;
var匹配=[];
var匹配;
while((match=regex.exec(str))){
matches.push(匹配[0]);
}
返回比赛;
}
让str1=“#世界是一个#好#的生活之地。”
让str2=“#世界#地方#生活”;
设res1=findHashTags(str1);
设res2=findHashTags(str2);
console.log(res1.join(“”));
console.log(res2.join(“”))
模式
#(\S*)
将匹配捕获组中的一个
#
,后跟一个非空白字符的0+倍。这也将匹配一个单独的#。字符串
#World#place#live.
不包含空白字符,因此将匹配整个字符串

您可以改为使用否定字符类.match#,后跟不匹配#或空白字符的否定字符类来匹配它们

#[^#\s]+

const字符串=[
“#世界是一个居住的好地方。”,
“世界、地方、生活。”
];
让模式=/#[^#\s]+/g;
strings.forEach(s=>{
console.log(s.match(pattern));
})
尝试
。替换(/\b#[^\s#]+/g,“$&”)
#[^#\s]+