2010-03-16 48 views
0

此正則表達式來自阿特伍德,用來過濾掉比href和標題之外的任何錨標籤:我該如何解決這個正則表達式來允許一個特定的字符串?

<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")?\s?> 

我需要允許專門匹配時附加屬性:目標=「_空白」。所以下面的網址應該被允許:

<a href="http://www.google.com" target="_blank"> 

我想變着花樣這些:

<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")(\starget="_blank")?\s?> 
<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")(\starget=\"_blank\")?\s?> 

顯然,我不知道正則表達式非常好。應該如何調整模式以允許空白目標和其他目標?

+0

你不應該使用正則表達式來解析HTML:http://stackoverflow.com/questions/1732348/regex-match -open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2010-03-16 19:53:36

+0

爲什麼多數民衆贊成在某種程度上是一個有趣的答案,它似乎有點愚蠢地採取字面和所有情況下。我使用它是一個簡單的消毒程序,只是爲了確保一些基本的標籤是允許的。即使我*不是這樣,正則表達式似乎也完成了這個任務。 ;) – 2010-03-16 20:10:58

回答

1
<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"\s(target=\"_blank\")> 

會做你在問什麼。

如果你是一個正則表達式結點,讓我推薦RegExBuddy。這是一個程序,可以讓你測試你的正則表達式的示例文本或示例文件。

節省很多時間。

http://www.regular-expressions.info/regexbuddy.html(正則表達式好友)

http://www.regular-expressions.info也是一個很好的資源

+0

請注意,此解決方案強制所述屬性(href,目標和標題)具有特定的順序。 – Felix 2010-03-16 19:55:51

+0

我正在使用這個URL來測試,但沒有拿出一個工作模式。 http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx – 2010-03-16 20:00:08

+0

這與我的例子一起工作......謝謝。 – 2010-03-16 20:12:09

1
<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")(\starget="_blank")> 
相關問題