【发布时间】:2014-10-14 04:39:22
【问题描述】:
我有一种形式的文本,其中有散布有 url 的文本段落。 我想解析从 url 创建 html 链接的字符串,并使用以下文本作为描述性链接文本,即
possibly some text here http://www.somewebsite.com/some/path/somepage.html descriptive text which may or may not be present
进入
<a href="http://www.somewebsite.com/some/path/somepage.html">descriptive text which may or may not be present</a>
这篇 SO 文章 JS: Find URLs in Text, Make Links 与我正在尝试做的事情相关,只是将 url 作为文本放置在锚元素中。
我已成功将 url 与
匹配var urlRE= new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?([^ ])+");
但我不确定之后如何进行匹配。
我遇到了这个帖子Regex - Matching text AFTER certain characters,它似乎适用。我尝试将我的 RE 包装在 /(?<=my url pattern here).+/ 中,但收到一条错误消息,指出存在无效组,这会导致 RE 无效。
在那篇文章中,J-Law 提到了
不允许可变长度的lookbehinds
这是我想要做的吗?
由于我已经匹配了 url,我觉得我可以轻松地进行一些子字符串数学运算来获得所需的结果。
我只是用它来尝试了解更多关于正则表达式的信息。
谢谢
【问题讨论】:
-
仅供参考,不仅在大多数正则表达式风格中不允许使用可变长度的lookbehinds (.NET 是这里规则的例外),JavaScript 不支持lookbehinds 完全没有。
-
关于您的正则表达式的注释。它要求在域之后有非空格。
([^ ])+。如果有site.XX这样的东西,它不会匹配。您可以将其更改为([^ ])*,我认为这并不重要。
标签: javascript regex