【问题标题】:Javascript regex urls that are not image extensions不是图像扩展的 Javascript 正则表达式 url
【发布时间】:2011-11-27 08:24:32
【问题描述】:

我有以下 JavaScript 匹配并用 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>'
        );

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    你可以先去测试一下:

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

    【讨论】:

    • 感谢您的回答,这样的事情适用于使用单个 url 的输入,但是我的输入可以在字符串中有多个 url。还是谢谢
    • 您可以使用自定义替换函数来检查匹配的字符串,将其与图像正则表达式进行比较,然后决定是否将其单独放置(将其替换为自身)或链接它。如果这应该是通用的链接代码,并且您试图避免 链接,那么您可能还需要避免各种其他事情(例如
    • 我添加了一个自定义替换函数的示例。
    猜你喜欢
    • 2023-03-14
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2012-02-13
    • 2011-07-06
    • 2017-12-17
    相关资源
    最近更新 更多