我正在使用这个jquery插件:https://github.com/maranomynet/linkify/blob/master/1.0/jquery.linkify-1.0.js
使用这个REGEX插件,我正在尝试链接@usernames和#hashtags ......
linkify.plugins = {
tUser: {
re: /(^|\s)@(\w+)/gi,
tmpl: '$1@<a href="http://domain.com/$2">$2</a>'
},
tHashtag: {
re: /(^|["'(]|<|\s)(#.+?)((?:[:?]|\.+)?(?:\s|$)|>|[)"',])/gi,
tmpl: function (match, pre, hashTag, post) {
return pre+'<a href="http://domain.com/search.php?q='+ encodeURIComponent(hashTag) +'">'+hashTag+'</a>'+post;
}
}
};
...但是我遇到了一些奇怪的组合问题:
(在 BOLD 应该链接的内容但不是)
有关如何修复REGEX以匹配此变体的任何想法?
谢谢!
答案 0 :(得分:3)
我对linkify不是很熟悉,但我会试一试。
第一个正则表达式( @user )的问题在于它不匹配,因为它需要前导空格或换行符 - 这是(^|\s)
部分。至于 #hash 正则表达式,嗯......这似乎不必要的复杂。请尝试以下方法:
linkify.plugins = {
tUser: {
re: /(^|\s|[^\w\d])@(\w+)/gi,
tmpl: '$1@<a href="http://domain.com/$2">$2</a>'
},
tHashtag: {
re: /(^|\s|[^\w\d])#(\w+)/gi,
tmpl: function (match, pre, hashTag) {
return pre+'<a href="http://domain.com/search.php?q='+
encodeURIComponent(hashTag) +'">#'+hashTag+'</a>';
}
}
};
这将匹配 @user 或 #hash ,只要它们前面有换行符,空格或非单词,非数字字符(不是az,AZ或0-9)。因此,您的括号不会干扰,但大多数电子邮件地址也不会被接收。
请注意,哈希符号不会包含在您对链接哈希标记的搜索中。