2014-09-01 171 views
0

我正在使用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可以与“<”和“>”符号替换所有字符串。

我写了这样的事情 -

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> 

它会给我什么,请让我知道我可以GET-

testtest2 

为最终输出。

+2

[''Java'!='JavaScript'](http://stackoverflow.com/a/245069/1393766)。无论如何,你可能应该阅读贪婪和不情愿的量词。 – Pshemo 2014-09-01 13:16:10

+3

使用HTML解析器。 – SLaks 2014-09-01 13:16:42

+0

是简单的字符串包含换行符? – 2014-09-01 13:16:51

回答

2

试试这个正则表达式来代替:

<[^>]+> 

DEMO:

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>。显然不是我们想要的。

+0

虽然这样做,但它是基于HTML标签中缺少''> 。解析HTML意味着你永远不会明白 - 请参阅' Unihedron 2014-09-01 13:37:57

1
/(<.*?>)/ 

只要使用它。用""替换所有的事件。

See demo.

相关问题