在字符串中搜索主题标签(带空格)并用span换行| JS

问题描述 投票:1回答:1

[Id喜欢搜索字符串并用跨号包装#标签。

我找到了一个很好的答案here

var repl = some_string.replace(/(^|\W)(#[a-z\d][\w-]*)/ig, '$1<span>$2</span>');

但是我想对其进行更新以满足我的需求。我有一些带有空格的标记,这些标记无法与正则表达式一起使用。我知道,如果它们有空格,从技术上讲不是#标签,而是我必须使用的数据。

例如:

text text text text #tag1 #tag2 tag2secondWord #tag3 / withSlash #tag4 #tag5

将给出:

text text text text <span>#tag1</span> <span>#tag2</span> tag2secondWord <span>#tag3</span> / withSlash <span>#tag4</span> <span>#tag5</span>

而且我想要:

text text text text <span>#tag1</span> <span>#tag2 tag2secondWord</span> <span>#tag3 / withSlash</span> <span>#tag4</span> <span>#tag5</span>

我曾尝试自己提出答案,但我对正则表达式不太满意,所以我想在这里问。有什么想法吗?

javascript regex
1个回答
2
投票

您可以使用此正则表达式:

(^|\W)(#.*?(?= #|$))

一旦找到一个哈希(#),它将保存所有字符,直到遇到一个空格,一个哈希或字符串末尾为止。

Demo on regex101

var str = 'text text text text #tag1 #tag2 tag2secondWord #tag3 / withSlash #tag4 #tag5';
console.log(str.replace(/(^|\W)(#.*?(?= #|$))/ig, '$1<span>$2</span>'));
© www.soinside.com 2019 - 2024. All rights reserved.