我想解析一些我从Twitter API获得的纯文本。我需要做的是基本搜索推文以找到一个“@”字符后跟一些文本,并用链接到该文本的锚替换纯文本。例如:
听取推文纯文本:“@ flintzke这是一个测试”
并使用正则表达式将其转换为:
<a href='www.twitter.com/flintzke'>@flintzke</a> this is a test
我的猜测是使用这种功能:
function getUsernameLink(text) {
var exp = /^[@][a-zA-Z0-9_!@#%&*]*[\s]$/ig;
return text.replace(exp, "<a href='https://twitter.com/$1'>$1</a>");
}
我的目标是找到一个表达式,在字符串中发现一个单词,文本,以“@”开头,以空格结尾
答案 0 :(得分:2)
我认为你有点努力;)。首先,锚点^
和$
标记字符串的开头和结尾(不是匹配的开头和结尾或者其他东西 - 我想你假设)。然后你使用$1
,但这对应于第一次捕获(第一组括号 - 你没有)。在匹配项周围添加括号或使用$&
。最后,\S
表示非空白字符。那么为什么不尽可能匹配尽可能多的非空白字符?
exp = /@(\S*)/g;
return text.replace(exp, "<a href='https://twitter.com/$1'>@$1</a>");
答案 1 :(得分:1)
试试这个:
text.replace(/\@(\w+)/g,"<a href='https://twitter.com/$1'>@$1</a>");