Javascript正则表达式网址不是图片扩展名

时间:2011-09-29 02:17:39

标签: javascript regex

我有以下JavaScript匹配并用HTML链接替换URLS,但我需要这个以排除以.png | .jpg | .jpeg | .gif结尾的网址.gif

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

1 个答案:

答案 0 :(得分:4)

你可以在之前进行测试:

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