使用正则表达式和 JavaScript 解析 twitter @name
我正在尝试使用 javascript 解析 twitter 名称标签,并且想知道这个正则表达式是否可以解决问题。我认为大部分都有效,但我只是想知道我是否正确使用了 $1 和 $2。人们能否确认这是正确的,如果是,请概括解释一下 $1 和 $2 代表什么?
str = str.replace(/([^\w])\@([\w\-]+)/gm,'$1<a href="http://twitter.com/$2" target="_blank">@$2</a>');
I'm trying to parse twitter name tags using javascript and was wondering if this regex would do the trick. I think most of this works, but am just wondering if I'm using the $1 and $2 properly. Can people confirm that this is right and if so, generally explain what the $1 and $2 represent?
str = str.replace(/([^\w])\@([\w\-]+)/gm,'$1<a href="http://twitter.com/$2" target="_blank">@$2</a>');
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您正在使用
$n
右:因此,您的
$1
将替换为匹配的[^\w]
,而$2
将替换为匹配的[\w\ -]+
。但是,我认为您在第一组中需要更多,以便您可以正确匹配"@pancakes"
等字符串,(^|\W+)
将为您服务更好:您可能需要阅读 JavaScript 正则表达式。
而且,多亏了 Kobi,您可以使用更简单的正则表达式,但您必须稍微更改一下替换内容:
并且当连字符不会被误认为是范围指示符时,您不需要转义连字符。
I think you're using the
$n
right:So your
$1
will be replaced with what matched[^\w]
and$2
will be replaced with what matched[\w\-]+
. However, I think you want a bit more in your first group so that you can properly match strings like"@pancakes"
, a(^|\W+)
would serve you better:You might want to read up on JavaScript regular expressions.
And, thanks to Kobi, you could use a simpler regular expression but you'll have to change change your replacements a little bit:
And you don't need to escape the hyphen when it can't be mistaken for a range indicator.
第一组 ([^\w]) 需要是可选的,因此请尝试以下操作: /([^\w])?\@([\w-]+)/gm
用于测试正则表达式的出色在线工具可以在这里找到:http://gskinner.com/RegExr/
The first group, ([^\w]), needs to be optional, so try this: /([^\w])?\@([\w-]+)/gm
A great online tool for testing a regex can be found here: http://gskinner.com/RegExr/