Javascript正则表达式修复不替换图像url

javascript regex fix for not replacing image url

本文关键字:替换 图像 url 正则表达式 Javascript      更新时间:2023-09-26

我使用regex将字符串中的所有url替换为<a href="url">url</a>

我使用

if(!String.linkify) {
    String.prototype.linkify = function() {
        // http://, https://, ftp://
        var urlPattern = /'b(?:https?|ftp):'/'/[a-z0-9-+&@#'/%?=~_|!:,.;]*[a-z0-9-+&@#'/%=~_|]/gim;
        // www. sans http:// or https://
        var pseudoUrlPattern = /(^|[^'/])(www'.['S]+('b|$))/gim;
        // Email addresses
        var emailAddressPattern = /['w.]+@[a-zA-Z_-]+?(?:'.[a-zA-Z]{2,6})+/gim;
        return this
            .replace(urlPattern, '<a href="$&">$&</a>')
            .replace(pseudoUrlPattern, '$1<a href="http://$2">$2</a>')
            .replace(emailAddressPattern, '<a href="mailto:$&">$&</a>');
    };
}

mystr.linkify();

它来自这里,https://stackoverflow.com/a/7123542/1602333

效果很好除非字符串中有img标签,它会替换

<img src="imgurl"/><img src="<a href="imgurl">imgurl</a>"

我应该对我的正则表达式做哪些更改,以不替换一些标签属性的一部分url ?

使用Autolinker.js,众所周知,链接是可靠的。

参见其他标签/属性内链接的描述部分:

将正确处理HTML输入。实用程序不会改变锚(<a>)标签内的href属性(或任何其他标签/属性),并且不会意外地将锚标签的内部文本包装为新的(这会导致双嵌套锚标签)。

下面是使用它的一个例子:

var linkedText = Autolinker.link(input_html, { className: "myLink" } );