我发现了很多正则表达式示例,可从文本中检索主题标签。不幸的是,我所需要的都不是任何例子。
这几乎是我所需要的,但是...
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节被标记标签的情况。
上面的示例对其进行检查,但不允许使用像ÁÉÍlike这样的字符,它无法正确检查井号标签的长度,并且不允许使用字符'-'。
因此,我需要以下内容:
主题标签可以以任何字母开头-A,z,B,Ñ,ó,Ú等,但不能以数字开头,也不能以特殊符号&%$或-_
主题标签的总长度必须为3至50个字符。正则表达式必须只接受完整的单词作为主题标签,而不能在前50个字符后切掉它们。因此,必须忽略以#开头但包含50个以上字符的单词,而不是将前50个字符转换为主题标签链接。在我的示例{2,50}
中无法正常工作。
主题标签的其余部分(当检查它不是以数字或特殊符号开头时)可能包含数字,任何字母和_ -
符号。\w
只允许_
但不允许-
可能吗?
试试这个:
/(^|\s)#([^\d&%$_-]\S{2,49})\b/g
说明:
(^|\s) #
#([^\d&%$_-] # not the characters you mentioned in the first position
\S{2,49}) # the first chracter was already matched
\b # a boundary to avoid overflow 50 characters
希望能帮助到你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句