0

嗨,我有一个将@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应该像@janeis 一样包裹在 a 标签中,并且@jane已经在标签中<a href="">@jane</a>,应该被忽略。

4

2 回答 2

1

描述

这个正则表达式将捕获@names尚未像这样包裹在里面的裸露<a href="">@jane</a>

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

用。。。来代替<a href="">$0</a>

在此处输入图像描述

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

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

于 2013-06-13T01:20:39.227 回答
0

这个问题的原因是因为我正在将@mentions 转换为动态链接,并且我正在加载要替换@mentions 的其他内容。我正在运行一个链接功能来链接导致问题的每个匹配项。

我无法让评论中提供的答案起作用,所以我尝试了一种不同的方法。

我知道在哪里添加了附加内容(在静态按钮之前),所以我使用 jquery 切片函数来选择要在哪些元素上运行该函数。

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

这样,该功能也仅针对需要的内容运行,而无需求助于额外的正则表达式过滤。

于 2013-06-12T22:46:03.893 回答