我发现了很多正则表达式的例子来从文本中检索hashtags。不幸的是,没有任何例子是我需要的。hashtags的正则表达式
这几乎是我所需要的,但...
function hashtags(text) {
return text.replace(/(^|\s)#(\w*[a-zA-Z]+\w{2,50})/g,
"$1<a href='/h/$2' target='_blank'>#$2</a>");
}
#标签不能以数字开头,以避免情况下,当例如第12号得到hashtaged。
上面的例子检查它,但它不允许像ÁÉÍÚ这样的字符,它不正确地检查标签长度并且不允许字符' - '。
所以,我需要如下:
#标签可与任何字母开头 - A,Z,B,N,O,U等,但不能以数字,而不是用特殊标记&%$或 - _
标签总长度必须为3-50个字符。正则表达式必须接受只有完整单词的标签,但不能在第一个50个字符后剪切它们。因此,以#开头但包含超过50个字符的单词必须被忽略,而不是将前50个字符转换为hashtag链接。在我的示例
{2,50}
不能正确工作。标签的其余部分(当选中它不以数字或特殊标志开头时)可能包含数字,任何字母和
_ -
标志。\w
只允许_
但不-
这可能吗?
你有简单的测试输入吗? –
我认为你可以适应[这个解决方案](http://stackoverflow.com/a/31115742/3832970)。 –