不是图像扩展名的 Javascript 正则表达式 url

标签 javascript regex

我有以下 JavaScript,它匹配 URLS 并将其替换为 html 链接,但是我需要它来排除以 .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>'
        );

最佳答案

你可以先测试一下:

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>'
        );
}

如果您需要进行多次替换,那么您可以使用自定义替换函数来检查图像结尾是否匹配并采取相应措施。那会像这样工作:

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>');
        }
    });

关于不是图像扩展名的 Javascript 正则表达式 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591738/

相关文章:

javascript - jQuery 验证电话号码前缀

javascript - 如何使用通用按钮+ selectInput 通过R Shiny 中的javascript更改轨迹n的图例图例状态

javascript - 使用 Jasmine 测试 AngularJS Controller

python - 返回两个特定行之间以 [+] 开头的所有行的子字符串

c++ - 为什么我的 C++ 正则表达式匹配正确,但没有返回正确的值?

javascript - 使用javascript转换以分号分隔的字符串

javascript - 使用同步方法测量开销的最佳方法

javascript - 如何重现 JavaScript 的 confirm() 函数提供的 "wait"功能?

javascript - 寻找一行类型转换 Number(oldValue) += 1;在JS中

c# - 正则表达式提取属性值