我想解析一些从 Twitter API 获得的纯文本。我需要做的基本上是搜索一条推文,找到一个“@”字符,后跟一些文本,然后用链接到该文本的 anchor 替换纯文本。例如:
采用推文纯文本:“@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>");
}
我的目标是找到一个表达式,该表达式可以在字符串、文本中找到单个单词,该单词以“@”开头并以空格结尾
最佳答案
我认为你有点努力了;)。首先, anchor ^
和 $
标记字符串的开头和结尾(不是匹配或其他内容的开头和结尾 - 我想你假设了)。然后您使用 $1
但这对应于第一个捕获(第一组括号 - 您没有)。在匹配项周围添加括号或使用 $&
。最后,\S
表示非空白字符。那么为什么不匹配尽可能多的非空白字符呢?
exp = /@(\S*)/g;
return text.replace(exp, "<a href='https://twitter.com/$1'>@$1</a>");
关于javascript - Javascript 的正则表达式获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13637275/