我正在使用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
作为最终输出。
答案 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)