0

这就是我获取正文标签的方式。

var tags =  body.match(/#([a-z0-9]+)/gi);

但是,如果句子是:

The brown #fox jumped over ‘ fence.

上面的正则表达式将处理“8216;” 作为一个标签,这是我不想要的。我只想要“狐狸”作为标签。

注意:我只想要一个基本的正则表达式解决方案。

4

3 回答 3

8

试试这个:

/(^#|\s#)([a-z0-9]+)/gi

现场演示:http: //jsfiddle.net/DerekL/NpjyR/

或这个:

/(^#|[^&]#)([a-z0-9]+)/gi   //this will exclude every &#
于 2012-05-17T04:36:07.770 回答
2

假设您可以访问 DOM,您可以使用 DOM 来解码 HTML,然后匹配文本内容:

var temp = document.createElement('div');
temp.innerHTML = body;
var tags = temp.textContent.match(/#([a-z0-9]+)/gi);
于 2012-05-17T04:34:35.220 回答
0

试试这个:

#([a-z0-9]+)\b(?!;)
于 2012-05-17T04:35:14.030 回答