如何替换两个符号之间所有出现的字符串?

时间:2014-09-01 13:14:56

标签: javascript regex string special-characters

我正在使用Javascript上的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,它可以用“&lt;”替换所有字符串和“&gt;”符号

我写了类似的东西 -

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

作为最终输出。

2 个答案:

答案 0 :(得分:2)

请尝试使用此正则表达式:

<[^>]+>

<强>样本:

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

<强>讨论

将html代码放在字符串中,并将此字符串应用于正则表达式。

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

原始正则表达式占用了太多字符(*是一个贪婪的运算符)。

查看此页面关于Repetition with Star and Plus,尤其是关于“注意贪婪!”的部分。

  

大多数初次使用正则表达式的人都会尝试使用<.+>。当他们在像This is a <EM>first</EM> test这样的字符串上测试时,他们会感到惊讶。您可能希望正则表达式匹配<EM>,并在该匹配后继续</EM>

     

但事实并非如此。正则表达式将匹配<EM>first</EM>。显然不是我们想要的。

答案 1 :(得分:1)

/(<.*?>)/

请使用此功能。将所有匹配项替换为""

See demo.