用于Javascript获取子字符串的RegExp

用于Javascript获取子字符串的RegExp,javascript,regex,Javascript,Regex,我想解析一些从twitterapi获得的纯文本。我需要做的基本上是在tweet中搜索一个“@”字符,后跟一些文本,然后用链接到该文本的锚来替换纯文本。例如: 以推特纯文本为例:“@flintzke这是一个测试” 并使用正则表达式将其转换为: <a href='www.twitter.com/flintzke'>@flintzke</a> this is a test 这是一个测试 我的猜测是使用这种函数: function getUsernameLink(text)

我想解析一些从twitterapi获得的纯文本。我需要做的基本上是在tweet中搜索一个“@”字符,后跟一些文本,然后用链接到该文本的锚来替换纯文本。例如:

以推特纯文本为例:“@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>");
}
函数getUsernameLink(文本){ 变量exp=/^[@][a-zA-Z0-9%&*[\s]$/ig; 返回文本。替换(exp,“”); }
我的目标是找到一个表达式,该表达式在字符串text中找到一个单词,该字符串以“@”开头,以空格结尾

我想您已经尽力了;)。首先,锚点
^
$
标记字符串的开始和结束(而不是匹配的开始和结束或其他东西-我想你是这么认为的)。然后使用
$1
,但它对应于第一个捕获(第一组括号,您没有)。在匹配项周围添加括号或使用
$&
。最后,
\S
表示非空白字符。那么为什么不匹配尽可能多的非空白字符呢

exp = /@(\S*)/g;
return text.replace(exp, "<a href='https://twitter.com/$1'>@$1</a>");
exp=/@(\S*)/g;
返回文本。替换(exp,“”);

我想你已经尽力了。首先,锚点
^
$
标记字符串的开始和结束(而不是匹配的开始和结束或其他东西-我想你是这么认为的)。然后使用
$1
,但它对应于第一个捕获(第一组括号,您没有)。在匹配项周围添加括号或使用
$&
。最后,
\S
表示非空白字符。那么为什么不匹配尽可能多的非空白字符呢

exp = /@(\S*)/g;
return text.replace(exp, "<a href='https://twitter.com/$1'>@$1</a>");
exp=/@(\S*)/g;
返回文本。替换(exp,“”);
试试这个:

text.replace(/\@(\w+)/g,"<a href='https://twitter.com/$1'>@$1</a>");
text.replace(/\@(\w+)/g,”;
试试这个:

text.replace(/\@(\w+)/g,"<a href='https://twitter.com/$1'>@$1</a>");
text.replace(/\@(\w+)/g,”;


刚刚编辑以显示我的当前trydo您想将tweet的其余部分放在结果字符串中吗?刚刚编辑以显示我的当前trydo您想将tweet的其余部分放在结果字符串中吗?哦,是的,您是对的,我想,^和$表示匹配字符串的开头,而不是整个字符串。这看起来好多了!是否可以在单词的开头查找@,但实际上不将其拉入$1?谢谢alot@MattHintzke当然利用捕获;)。你可以随意把括号放在任何你想放的地方。请参阅my edit.ohhh,括号表示字符串的实际“捕获”是什么?太好了!thanks@MattHintzke是的,我就是这个意思。对不起,如果不清楚的话。哦,是的,你是对的,我想,^和$表示匹配字符串的开头,而不是整个字符串。这看起来好多了!是否可以在单词的开头查找@,但实际上不将其拉入$1?谢谢alot@MattHintzke当然利用捕获;)。你可以随意把括号放在任何你想放的地方。请参阅my edit.ohhh,括号表示字符串的实际“捕获”是什么?太好了!thanks@MattHintzke是的,我就是这个意思。对不起,如果不清楚的话。如果字符串中的最后一个单词前面有
@
,这不仅不起作用,而且还会删除链接单词和后面的单词之间的空格。是的。现在只有第一个仍然适用;)。对于字符串末尾的
@name
,它仍然不起作用。下面的内容可以满足您的第一点,但@MattHintzke要求的是与字符串末尾的模式不匹配<代码>文本。替换(/\@(\w+)/g,“”)他的要求是“我需要做的基本上是在推特上搜索“@”字符,然后找到一些文本,并用链接到该文本的锚替换纯文本。”他没有对这个位置做出任何假设。我相信一个解决方案应该试图捕捉OP的意图,而不仅仅适用于他给出的几个具体例子。那么我最后的评论应该满足他的需要,除了如果在字符串末尾找到模式,它会在末尾添加一个空格。不仅要感谢如果字符串中的最后一个单词前面有
@
,这将不起作用,它还会删除链接单词和后面的单词之间的空格。是的。现在只有第一个仍然适用;)。对于字符串末尾的
@name
,它仍然不起作用。下面的内容可以满足您的第一点,但@MattHintzke要求的是与字符串末尾的模式不匹配<代码>文本。替换(/\@(\w+)/g,“”)他的要求是“我需要做的基本上是在推特上搜索“@”字符,然后找到一些文本,并用链接到该文本的锚替换纯文本。”他没有对这个位置做出任何假设。我相信一个解决方案应该试图捕捉OP的意图,而不仅仅适用于他给出的几个具体例子。那么我最后的评论应该满足他的需要,除了如果在字符串末尾找到模式,它会在末尾添加一个空格。谢谢