Javascript正则表达式:环绕@_____,#_____,和http:// ______一次性使用锚标签?

raw*_*rrr 5 javascript regex bit.ly

相关(但略有不同):

使用锚标记围绕@________,#___________和http:// _________的所有实例?

我想围绕的所有实例@_______,#________以及http://________用锚标记在一个通行证.

例如,考虑这个Twitter消息:

快速的棕色狐狸@Spreadthemovie跳过懒狗#cow http:// URL

使用所需的正则表达式模式运行它将产生:

The quick brown fox <a href="a">@Spreadthemovie</a> jumps over the lazy
dog <a href="b">#cow</a> <a href="c">http://URL</a>
Run Code Online (Sandbox Code Playgroud)

只有围绕与开头的单词@,#http://使dog@gmail.com不会成为dog<b>@gmail.com</b>.

Dan*_*ral 1

s/(?<!\w)(@\w*|#\w*|http:\/\/[\w\/\.?=]*\w)/<a>$1<\/a>/g
Run Code Online (Sandbox Code Playgroud)

我想这样就可以了。如果@...、#... 或 http... 前面有数字或字母,则它不会匹配,这将阻止电子邮件。请针对输入集进行测试,并报告任何失败,以便我能够满足它。

尤其是 URL,相当困难。现在我犯了保守的错误。如果您愿意,可以将其更改为仅在点、空格和括号处停止。

现在,对于 @、# 和 http 的不同链接...您必须使用函数进行替换,如另一个答案所示。

通过三遍,只需执行以下操作:

s/(?<!\w)(http:\/\/[\w\/\.?=]*\w)/<a href="c">$1<\/a>/g
s/(?<!\w)(#\w*)/<a href="b">$1<\/a>/g
s/(?<!\w)(@\w*)/<a href="a">$1<\/a>/g
Run Code Online (Sandbox Code Playgroud)