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>
我曾经尝试自己提出答案,但是我对正则表达式不太满意,所以我想在这里问。有什么想法吗?
答案 0 :(得分:3)
您可以使用此正则表达式:
(^|\W)(#.*?(?= #|$))
一旦找到一个哈希(#
),它将保存所有字符,直到遇到一个空格,一个哈希或字符串末尾为止。
var str = 'text text text text #tag1 #tag2 tag2secondWord #tag3 / withSlash #tag4 #tag5';
console.log(str.replace(/(^|\W)(#.*?(?= #|$))/ig, '$1<span>$2</span>'));