簡體   English   中英

正則表達式將url轉換為超鏈接

[英]Regular expression convert url to hyperlink

我已經搜索了一些使用bbcode將URL轉換為超鏈接的代碼,代碼是:

// format the url tags: [url=www.website.com]my site[/url]
// becomes: <a href="www.website.com">my site</a>
exp = new Regex(@"\[url\=([^\]]+)\]([^\]]+)\[/url\]");
str = exp.Replace(str, "<a href=\"$1\">$2</a>");

// format the img tags: [img]www.website.com/img/image.jpeg[/img]
// becomes: <img src="www.website.com/img/image.jpeg" />
exp = new Regex(@"\[img\]([^\]]+)\[/img\]");
str = exp.Replace(str, "$1\" />");

我也想轉換普通鏈接的超鏈接。我在Google上搜索了更多內容:

exp = new Regex("(http://[^ ]+)");
str = exp.Replace(str, "<a href=\"$1\">$1</a>");

問題是,當我混合它們並執行第三個正則表達式時,前兩個將被弄亂。 因為它可能導致:

<img src="<a href='www.website.com/img/image.jpeg>www.website.com/img/image.jpeg</a>" />

如何在我的第三個正則表達式中指定他不能轉換以'href =“'或'src =”'開頭的字符串?

鑒於用戶可能會向您扔掉有趣的標簽組合,因此正則表達式很快變得笨拙且難以解析標簽。

BBCode本質上是一種語法,以編程方式解釋語法的最佳方法是使用實​​際的解析器。

看看http://bbcode.codeplex.com/ 我不能保證它的有效性,但是他們已經在C#中為BBCode實現了一個解析器,該解析器可能會滿足您的需求。

暫無
暫無

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

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