簡體   English   中英

如何替換兩個符號之間所有出現的字符串?

[英]how to replace all occurrence of string between two symbols?

我正在使用Java的RegEx,這就是我要堅持的地方。

我有一個簡單的字符串

<html><body><span style=3D"font-family:Verdana; color:#000; font-size:10pt;=
"><div><font face=3D"verdana, geneva" size=3D"2">http://72.55.146.142:8880/=
order003.png.zip,120</body></html>

我需要做的就是編寫javascript,它可以將所有字符串替換為“ <”和“>”符號。

我寫了這樣的東西-

var strReplaceAll = Body;
var intIndexOfMatch = strReplaceAll.indexOf( "<" );

while (intIndexOfMatch != -1){

    strReplaceAll = strReplaceAll.replace(/<.*>/,'')

    intIndexOfMatch = strReplaceAll.indexOf( "<" );
}

但是問題是身體是否包含-

test<abc>test2<adg>

它會給我-

test

僅或如果主體包含-

<html>test<abc>test2<adg>

它不會給我任何東西,請讓我知道我如何能-

testtest2

作為最終輸出。

嘗試使用此正則表達式:

<[^>]+>

演示:

http://regex101.com/r/kI5cJ7/2

討論

將html代碼放在字符串中,然后將正則表達式應用於此字符串。

var htmlCode = ...;
htmlCode = htmlCode.replace(/<[^>]+>/g, '');

原始正則表達式使用太多字符( *是貪婪的運算符)。

檢查有關Star和Plus重復的頁面,尤其是“當心貪婪!”部分。

正則表達式的大多數新手都會嘗試使用<.+> 當他們在像This is a <EM>first</EM> test的字符串上測試它時會感到驚訝, This is a <EM>first</EM> test 您可能希望正則表達式匹配<EM>並且在匹配之后繼續</EM>

但事實並非如此。 正則表達式將匹配<EM>first</EM> 顯然不是我們想要的。

/(<.*?>)/

只是使用這個。 將所有出現的內容替換為""

參見演示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM