2011-09-23 72 views
1

我有一個簡單的正則表達式:簡單的JavaScript正則表達式需要幫助

\[quote\](.*?)\[\/quote\] 

將取代[報價]由表,TR和TD。 (和[/報價]通過/ TD,/ tr和/表)

它完全適用於在相同的字符串多個分開引號:

IE:

[quote] 
Person 1 
[/quote] 
Person 3 talking about a quote 

[quote] 
Person 2 
[/quote] 
Person 3 talking about another quote. 

當它試圖BUT在相同的字符串替換多個(非獨立)的報價:

IE:

[quote] 
[quote] 
Person 1 
[/quote] 
Person 2 quoting person 1 
[/quote] 
Person 3 quoting person 2 and 1 

它攪亂(匹配第一個報價到第一個/報價,當它應該匹配第一個報價到第一個報價和第一個報價到最後一個報價時)

如何編輯正則表達式,以便它們在兩個示例中都起作用?

非常感謝,

詹姆斯

+0

一個單元表?我認爲我們在2000年左右放棄了這些。 :( – Quentin

回答

2

正則表達式是不解析嵌套的結構化文本一個不錯的選擇。請參閱this question for JavaScript BBCode解析器

+0

我正在使用Javascript :((預覽帖子框) –

+0

更新了答案 – Imran

0

試試這個:

\[quote\]{1,}(.*?)\[\/quote\] 
+0

不幸的是不工作:( –

+0

你是否是指引號或文字'[quote]'(as string)? – iwg

0

我創建了一個示例JavaScript代碼解析器來處理這種情況。我想我已經解決了這種情況,因爲JavaScript的字符串替換函數可以接受另一個函數,所以您可以使您的解析器遞歸地處理輸入的較小部分。但是,從我看過它已經有一段時間了。你可以在這裏看到它的行動和下載在同一頁上(下載鏈接是在標題下 - 「你可以下載JavaScript模塊爲這個在這裏。」):

http://patorjk.com/bbcode-previewer/