非图像扩展的Javascript正则表达式URL

非图像扩展的Javascript正则表达式URL,javascript,regex,Javascript,Regex,我有下面的JavaScript,它匹配URL并用html链接替换URL,但是我需要它来排除以.png |.jpg |.jpeg |.gif结尾的URL text = text.replace( /(\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|])/gim, '<a href="$1" class="autolink" target="_b

我有下面的JavaScript,它匹配URL并用html链接替换URL,但是我需要它来排除以.png |.jpg |.jpeg |.gif结尾的URL

text = text.replace(
            /(\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|])/gim,
            '<a href="$1" class="autolink" target="_blank">$1</a>'
        );
text=text.replace(
/(\b(?:https?| ftp):\/\/[a-z0-9-+&@#\/%?=~(u124;)!:,.;]*[a-z0-9-+&@#\/%=~(u124;])/gim,
''
);

您可以在以下情况之前进行测试:

if (!text.match(/\.(png|jpg|jpeg|gif)$/) {
    text = text.replace(
            /(\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|])/gim,
            '<a href="$1" class="autolink" target="_blank">$1</a>'
        );
}
if(!text.match(/\(png|jpg|jpeg|gif)$/){
text=text.replace(
/(\b(?:https?| ftp):\/\/[a-z0-9-+&@#\/%?=~(u124;)!:,.;]*[a-z0-9-+&@#\/%=~(u124;])/gim,
''
);
}
如果需要进行多次替换,则可以使用自定义替换函数来检查图像结尾的匹配情况,并相应地执行操作。其工作原理如下:

var imageRegex = /\.(png|jpg|jpeg|gif)$/;
text = text.replace(/(\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|])/gim, 
    function(str) {
        if (str.match(imageRegex)) {
            return(str);
        } else {
            return('<a href="' + str + '" class="autolink" target="_blank">' + str + '</a>');
        }
    });
var-imageRegex=/\(png | jpg | jpeg | gif)$/;
text=text.replace(/(\b(?:https?| ftp):\/\/[a-z0-9-+&@#\/%?=~!:,.;]*[a-z0-9-+&@#\/%=~ |]/gim,
功能(str){
if(str.match(imageRegex)){
返回(str);
}否则{
返回(“”);
}
});

谢谢你的回答,类似这样的内容适用于使用单个url的输入,但是我的输入可以在字符串中包含多个url。谢谢你,你可以使用自定义替换函数检查匹配的字符串,将其与图像正则表达式进行比较,然后决定是否不使用它(将其自身替换)如果这是一个通用的链接代码,而你试图避免链接,那么你也可能有其他的事情要避免(比如我添加了一个自定义替换函数的例子)。