繁体   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