2013-05-30 36 views
-2

我在執行我想要實現的任務時遇到了困難,它可能只是睡眠剝奪,但更有可能的是,正則表達式不是我的強項,我只是不能很好地解決它,但希望有人能在這裏給我一隻手。JavaScript正則表達式格式化字符串

我有以下字符串:

<span class="comment"><!--Some string\nsome other string\nsome more string--></span> 

我需要使它看起來像這樣格式化:

<span class="comment"><!--Some string</span>\n<span class="comment">some other string</span>\n<span class="comment">some more string--></span> 

現在,這將是非常容易的,如果這是唯一的字符串作爲我可以做這樣的事情:

/</span>\n<span class="comment">/gi 

然而格式只應該發生如果對應ding open </span>有類「評論」,另一個問題是帶有類註釋的開放span標籤不一定是字符串的第一個單詞,可能有一個字符串在它的前面,並且可以有無數個\ n在範圍內...例如另一個變化可能看起來像這樣:

&lt;<span class="tag">string1\nstring2</span>&gt;<span class="comment"><!--string\nanother random string--></span> 

無格式應與類標籤跨度內發生,但是格式化應該發生在類註釋跨度。

這是相當具有挑戰性的我身邊讓我的頭,我得到的最接近的是以下幾點:

正則表達式:

/<span class="comment">([^\<\/]*)\n/gi 

更換:

<span class="comment">$1</span>\n<span class="comment"> 

此靠攏,因爲它使用類註釋格式化跨度範圍內的最後一行和第一行,而不是之間的行。

可能有JavaScript解決方案來做到這一點,但如果可能我寧願使用正則表達式。

+1

你只是想用''替換'\ n'嗎?你不需要這樣的正則表達式。 – Mathletics

+2

@Mathletics,看起來他想要' \ n ',但除了那個細節你似乎是對的! – jmeas

+0

@sircodesalot我不認爲這適用;這實際上是將標記嵌入到字符串中,而不是解析HTML。 – Mathletics

回答

0

在這裏你去,

str.replace (/<span\s+class="comment">.*<\/span>/ig, function (m) { 
    return m.replace (/\n/g, '</span>\n<span class="comment">'); 
    }); 

提取跨度和它的內容,然後全部更換\n中的一部分。

+0

謝謝你,我設法讓你的解決方案在我的項目中工作,並感謝你花時間提供幫助,考慮到這個問題很難解釋! –

+0

很高興爲您服務。 – HBP

相關問題