2011-06-20 41 views
1

原始版本:如何將Ajax數據響應轉換爲字符串?

<div> 
    <p> 
     <span>text</span> 
    </p> 
<div> 

正則表達式:

$.get('/some.html', function(data) { 
    alert(data.replace(/<p.*p>/gi, '')); 
}); 

正則表達式後:

<div> 
    <> 
     <span>text</span> 
    </> 
<div> 

什麼我需要得到:

<div> 

<div> 
+3

我不認爲這個問題的標題反映了問題的內容。 –

回答

2

JavaScript有沒有DOTALL模式,使您的.不匹配換行符。

,但你可以試試這個

$.get('/some.html', function(data) { 
    alert(data.replace(/<p[\S\s]*?p>/gi, '')); 
}); 

[\S\s]手段匹配任何非空白(\S)或任何空白(\s)字符。換行符包含在空格字符中。

*?是一個非貪婪的匹配,意味着它匹配儘可能少。

只要標籤嵌套,使用正則表達式時就會遇到問題。你必須意識到這一點。可能來自@fearofawhackplanet的解決方案是更好的選擇。

+0

所以,我想解析ajax響應像這樣的字符串: http:// jsfiddle。net/DgejB/ – Algorithm

0

如果我正確了你,那麼你需要的是這樣的......但它將使所有的div在頁面爲空白格

$('div').html(''); 

,如果你想刪除特定的div然後給一個ID到該分區,然後做這樣的..

$(data).find('#divID').html(' '); 
+0

認爲他想改變它,然後顯示內容,但顯示然後改變也將實現預期的正確。 – Balanivash

+0

我需要將ajax數據轉換爲字符串,並像往常一樣使用字符串來解析 – Algorithm

+0

@ Balanivash - 只要看看他的最後一點 - 他只想要一個沒有innerHTML的div ..正如他在他的問題中指出的那樣 – Vivek

2

如果你想返回的HTML工作,那麼你不應該做的是通過正則表達式。

我不完全確定我理解你的問題,但看起來你正試圖從結果中刪除<p>元素?您可以使用jQuery返回的HTML,一些工作就像

$(data).remove('p'); 
0

Javascript regexp與\「n」不匹配。並且你指定了// g標誌。在正常情況下,在javascript中使用[\ s \ S]。

alert(data.replace(/<p[\s\S]*?p>/i, '')); 
+0

,你應該指定「?」爲最小匹配。 :) – mattn

相關問題