2013-07-18 53 views
0

我有一個從DOM世界序列化的字符串,我想在該字符串中找到一些結束標記,並用新字符串替換它們。我永遠不知道那個原始字符串的長度,所以字符數等在這裏不起作用。示例場景:Javascript字符串替換 - 非字母數字字符的正則表達式,如反斜槓,大於等

var onetext = "</content><tag>A whole bunch of stuff</tag></message>" 
var twotext = "</content><tag>A whole bunch of new, unrelated stuff</tag></message>" 
var threetext = onetext.replace(/[\/<]/\\/content>.+</message>/,"</content>"+twotext+"</message>"); 

我顯然沒有正則表達式的權利來查找反斜槓的實例,大於或小於。我歡迎任何人幫助正確運行。謝謝。

回答

1

顯然,有一種方法用一條線來做到這一點

您可以使用分組在替換字符串標識符是這樣的:

'<foo>Some data</foo>'.replace(/(<foo>)(.+)(<\/foo>)/,'<bar>$2</bar>') 

然而,在這一天結束時,如果您只需要替換結束標記,只需替換這些標記,不必擔心其他內容,除非您還需要通過它。如果你只是在看......那麼這就是你需要的表達方式:

/<\/content>.+<\/message>/ 
+0

我遇到了web服務被替換字符串的不同問題,但並不是因爲您的第一個替換示例不起作用(奇怪的是,我無法得到第二個建議,這更接近我提出的問題,一起工作)。謝謝! – jimiayler

1

如果你想捕捉所有不是允許的字符,然後寫你的表達。

這是一個表達式(保留數字,字母和空格,拒絕其他所有內容): (?![a-zA-Z0-9])。

如果您正在尋找特定HTML標籤的東西,你想要的(漁獲打開和關閉標籤):

([\ <] | [/>])

+0

謝謝,但我也試圖利用'。+ ,即讓我的字符串替換構造函數「look」like:'.replace(。+,「」+ twotext +「」)'至少就string.replace和RegEx而言。我不確定在這種情況下我會如何利用您的建議。 – jimiayler

+0

你無法在一行上使用正則表達式。你最好的辦法是做兩遍,一個用來取代打開的標籤,另一個用來取代關閉的標籤。 'var onetext =「一大堆東西」; var twotext =「一大堆新的,不相關的東西」; var threetext = onetext.replace(/ /,''); threetext = threetext.replace(/ <\/content> /,''); alert(treetext);' – drz

+0

我使用了onetext/twotext/threetext場景(在你的例子中你拼錯爲'treetext',似乎並沒有使用雙文本)作爲例子 - 可悲的是,我永遠不知道什麼是在第一個字符串中和之間,所以需要一個通配符。我認爲我在這裏找到了:[link](http://www.regular-expressions.info/javascriptexample.html) - 如果我嘗試「 [\ s \ S] *」,那麼它會正確替換字符串,但''var sendlesson = usertext.replace(new RegExp(「\\ [\ s \ S] *」,「gm」),「」+ textvar +「」);'will not work('textvar'確實有文字)。嘆息... – jimiayler