簡體   English   中英

正則表達式替換鏈接

[英]regular expression to replace links

我有以下代碼以純文本創建html鏈接。 這可以正常工作,但鏈接不應包含.png或.jpg

對適應正則表達式有什么建議嗎?

var urlPattern = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/gi;

return function(text, target) {

    var replace = text.replace(urlPattern, '<a target="' + target + '" href="$&">$&</a>');

    return replace
};

您可以添加錨點和前瞻性選擇,以添加限制:

 var urlPattern = /^(?!.*(?:png|jpg)$)(http|ftp|https):\\/\\/[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&amp;:\\/~+#-]*[\\w@?^=%&amp;\\/~+#-])?$/gi; function repl (text, target) { var replace = text.replace(urlPattern, '<a target="' + target + '" href="$&">$&</a>'); return replace; }; alert(repl("http://some.site.com/new/1.gif", "_blank")); alert(repl("http://some.site.com/new/1.png", "_blank")); 

這里的關鍵部分是^(?!.*(?:png|jpg)$) :它使檢查從字符串的開頭開始,並確保結尾沒有pngjpg

如果您傳遞帶有URL的較長字符串, 可以使用以下正則表達式來假定URL中沒有空格:

var urlPattern = /(?!\S*(?:png|jpg)(?:$|\s))(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?/gi;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM