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

时间:2019-12-11 22:39:27

标签: javascript regex

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>

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

1 个答案:

答案 0 :(得分:3)

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

(^|\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>'));