我在SO上看了几个其他可能的解决方案,但没有看到任何正在做我正在做的事情.
mystring = mystring.replace(/(^|\W)(#[a-z\d][\w-]*)/ig,"$1<span class='hash_tag'>$2</span>").replace(/\s*$/,"");
这成功地检测到各种#hashtags.然而,它还检测URL中的锚点,例如:http://www.example.com/#anchor – 我无法弄清楚如何修改我必须排除锚点,同时保持其灵活性.
谢谢
解决方法
这是一个匹配hashtag(#)的正则表达式,如果它前面有一个空格或它是字符串的开头..就像这样:
(^|\s)(#[a-z\d-]+)
工作正则表达式示例:
使用Javascript:
var string = '#hello This is an #example of some text with #hash-tags - http://www.example.com/#anchor but dont want the link'; string = string.replace(/(^|\s)(#[a-z\d-]+)/ig,"$1<span class='hash_tag'>$2</span>"); console.log(string);
输出:
<span class='hash_tag'>#hello</span> This is an <span class='hash_tag'>#example</span> of some text with <span class='hash_tag'>#hash-tags</span> - http://www.example.com/#anchor but dont want the link