小编Kla*_*nis的帖子

Javascript正则表达式:查找所有网址优化

这个问题是以下帖子的后续内容: Javascript正则表达式:查找<a>标签之外的所有网址 - 嵌套标签

我发现代码:

\b((https?|ftps?):\/\/[^"<\s]+)(?![^<>]*>|[^"]*?<\/a)
Run Code Online (Sandbox Code Playgroud)

相比单独执行它是极其低效的httpftp部分是这样的:

\b(https?:\/\/[^"<\s]+)(?![^<>]*>|[^"]*?<\/a)
Run Code Online (Sandbox Code Playgroud)

\b(ftps?:\/\/[^"<\s]+)(?![^<>]*>|[^"]*?<\/a)
Run Code Online (Sandbox Code Playgroud)

以下是regex101.com的示例:

但是,在我的一个HTML页面中,这些代码比较为85628步骤与7258 + 795步骤,这非常疯狂.

据我所知,使用(x | y)模式可以减少执行长度,但这可能是因为一个奇怪的原因.

任何帮助,将不胜感激.

html javascript regex hyperlink multipart-alternative

6
推荐指数
1
解决办法
105
查看次数

Javascript 正则表达式:查找 &lt;a&gt; 标签之外的所有 URL - 嵌套标签

我已经构建了这个正则表达式代码:

((https?|ftps?):\/\/[^"<\s]+)(?![^<>]*?>|[^<>]*?<\/)
Run Code Online (Sandbox Code Playgroud)

第一组捕获 HTML 中的所有链接,第二组是否定前瞻,以排除标记内的任何部分作为属性以及标记内的任何部分作为内容。

我希望只<a>排除标签 - 因此解决方案可能是仅将最后一项修改为:

[^<>]*?<\/a>
Run Code Online (Sandbox Code Playgroud)

但现在如果我有嵌套标签,例如<b></b><a>.

这是我正在处理的示例:https://regex101.com/r/lM3hC5/6(应该是 10 个匹配项)。

负向预测对我来说仍然很棘手。我认为以下内容应该有效,但事实并非如此:

(?!<a.+?<\/a>)
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/hT1cG5/1

这些是对我有帮助的最后讨论:

html javascript regex nested hyperlink

3
推荐指数
1
解决办法
2297
查看次数