忽略包含在链接中的@mentions

时间:2013-06-12 21:39:09

标签: javascript jquery regex username

您好我有一个脚本将@mentions解析为链接,但这需要多次加载,目前它会破坏它已经解析为链接的内容所以我需要让它忽略已经包含的@mentions一个标签,但我看不到它的工作。

这是我到目前为止所做的: /((?:^|[^a-zA-Z0-9_!#$%&*@@]|RT:?))([@@])([a-zA-Z0-9_\.]{1,20})(\/[a-zA-Z][a-zA-Z0-9_-]{0,24})?/g

示例字符串是:

Hi @andre Hi <a href="">@jane</a>

@andre应该包含在@jane之类的标记中,并且@jane已经在标记<a href="">@jane</a>中,应该被忽略。

2 个答案:

答案 0 :(得分:1)

描述

此正则表达式将捕获尚未包含在其中的裸@names <a href="">@jane</a>

正则表达式(?!>)([@@])([a-zA-Z0-9_\.]{1,20})\b(?!<)

替换为<a href="">$0</a>

enter image description here

输入文字:Hi @andre Hi <a href="http://some.url">@jane</a>

输出文字:Hi <a href="">@andre</a> Hi <a href="http://some.url">@jane</a>

答案 1 :(得分:0)

这个问题的原因是因为我正在将@mentions转换为动态链接,而我正在加载其他内容,其中包含要更换的@mentions。我正在运行一个linkify函数来链接每个引起问题的匹配。

我无法在评论中得到提供的答案,所以我尝试了不同的方法。

我知道添加其他内容的位置(在静态按钮之前)所以我使用了jquery slice函数来选择运行该函数的元素。

var linkify = $('.user-profile-feed-item').slice(-4).find('.linkify');

这样,该函数也只针对需要运行而无需借助额外的正则表达式过滤。