如何在一些文本中搜索任何和所有主题标签(字母数字和下划线和连字符)并将其包装在span标签中,例如搜索
some_string = "this is some text with 3 hashtags #Tag1 and #tag-2 and #tag_3 in it"
Run Code Online (Sandbox Code Playgroud)
并将其转换为:
"this is some text with 3 hashtags <span>#Tag1</span> and <span>#tag-2</span> and <span>#tag_3</span> in it"
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这个:
some_string = some_string.replace(/\(#([a-z0-9\-\_]*)/i,"<span>$1</span>");
Run Code Online (Sandbox Code Playgroud)
但有一个错误是它不包括应该包装的#.它似乎输出:
"this is some text with 3 hashtags <span>Tag1</span> and #tag-2 and #tag_3 in it "
Run Code Online (Sandbox Code Playgroud)
此外,它只检测它遇到的第一个#标签(例如,#Tag1在此示例中),它应该检测所有.
此外,我需要#标签后至少有1个字符.所以#本身不应该匹配.
谢谢
试试这个替换电话:
编辑:如果你想跳过http://site.com/#tag一些字符串然后使用:
var repl = some_string.replace(/(^|\W)(#[a-z\d][\w-]*)/ig, '$1<span>$2</span>');
Run Code Online (Sandbox Code Playgroud)
这是你想要的正则表达式:
/(#[a-z0-9][a-z0-9\-_]*)/ig
Run Code Online (Sandbox Code Playgroud)
这i使它不区分大小写,您已经拥有了。但是g它可以查看整个字符串(“g”代表“全局”)。如果没有g,匹配会在第一次匹配时停止。
这还包括删除不正确的括号和一些不需要的反斜杠的修复程序。