我有一个javascript应该检测主题标签和提及并替换它们。我正在使用这个库:https://github.com/AnSavvides/jquery.linky
function _linkifyHashtags(text, links) {
// If there is no search URL for a hashtag, there isn't much we can do
if (links.hashtagSearchUrl === null) return text;
return text.replace(/(^|\s|\(|>)#((\w|[\u00A1-\uFFFF])+)/g, "$1<a href='" + links.baseUrl + links.hashtagSearchUrl + "$2' target='_blank'>#$2</a> ");
}
此代码的问题在于,只有在使用空格写入主题标签之前,regEx才有效(例如:“#hi #hello #lo”)
如果之前写的主题标签没有空格,就像这个“#hi#hello #lo”一样,脚本没有检测到主题标签。
我之前尝试过添加可能的非白色字符:
/(^|\s|\S|\(|>)#((\w|[\u00A1-\uFFFF])+)/
它“半途而废”。突然之前,脚本会检测到之前没有空格的每个第二个#标签。
我不是RegEx的专家,并试图阅读这个,但我不知道如何让这部分正确。谁知道?
答案 0 :(得分:3)
只需删除标签前面的内容限制,因为现在没有任何内容也是有效的选择。
/#((\w|[\u00A1-\uFFFF])+)/g
您还应该相应地从替换中删除它,将其简化为:
return text.replace(/#((\w|[\u00A1-\uFFFF])+)/g, "<a href='" + links.baseUrl + links.hashtagSearchUrl + "$1' target='_blank'>#$1</a> ");
答案 1 :(得分:2)
试试这个:
/(^|\s?|\(|>)#((\w|[\u00A1-\uFFFF])+)/
?在\ s捕获0或1个空格后。
答案 2 :(得分:0)