【发布时间】:2012-07-31 16:41:37
【问题描述】:
我需要用实际的可点击链接替换 HTML 文本字符串中的所有文本链接。适用于以下正则表达式:
/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi
然后我注意到它还替换了图像和已经格式化的链接。我需要排除以 src" 和 > 开头的链接的数字 ...
/(^(?!src="|>)\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi
但这不再匹配任何链接。我尝试了几个类似的语句,没有 ^,更改了一些括号等,但似乎没有任何效果。我尝试将.{0} 放在我添加的部分和 \b 之间,以确保他只会查看 url 前面的内容而不考虑更远的内容。
【问题讨论】:
-
它不应该检测到: 它也不应该检测到:{link} 所以简而言之没有链接应该以 > 或 = 开头(这里同时使用 src=" 和 href=")。
-
我通常比下一个人更喜欢一个好的多肉正则表达式问题,但我怀疑将文本内部 HTML 转换为 documentFragment 并使用它会使从 html 中分离文本变得容易得多。
标签: javascript regex image hyperlink