正则表达式去HTML标签问题-被大于号绊住了

APM60- 2007-03-14 03:49:17
想从论坛取一段内容摘要放到其他页。因为只取一部分文字,所以把HTML标签全去掉。为了图省事,我用的正则是——(\<)(.*?)(\>)
部分原文:
……<img onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" src=……(省略) >……
结果:
screen.width-500)this.style.width=screen.width-500;" src=……(省略) >……
竟然把大于号当成右尖括号来判断了。
想到一个笨办法就是把论坛的输出a>b换成b<a 。
因为刚学会正则的用法,所以还是不死心,问问大家有啥其他好办法没有。
旨在探讨,学习和提高。

(俺刚来不久,头一次发帖。不太了解分数怎么给,希望有热心的朋友说明一下或给个链接地址,多谢!)

...全文
1218 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihy2011 2011-06-30
  • 打赏
  • 举报
回复
<h1>dasdcxzcz<h1>
lihy2011 2011-06-30
  • 打赏
  • 举报
回复
edfadsdasda
muxrwc 2007-06-14
  • 打赏
  • 举报
回复
TO:

slowhand(早起的鸟儿有虫吃,那么早起的虫子呢?)

那个式子写错了。。呵,改成这个。。

var p = /<(?:"[^"]*"|'[^']*'|[^>'"]*)+>/g;
APM60- 2007-03-15
  • 打赏
  • 举报
回复
又长知识了。
muxrwc 2007-03-15
  • 打赏
  • 举报
回复
嗯,就是那个意思。。
HTML标记里<v>
v的值只有"v1"和v2(不等于<)两种情况。
v1的值不等于"
所以就
<(v1|v2)+>
就可以了。。
但是。。。
v2的的限定如果只是不等于<的话。。会匹配到v1所以。。
v2还要多1条限定就是 不等于 "或者'
APM60- 2007-03-15
  • 打赏
  • 举报
回复
果然好用。
又对比着看了下正则语法,可能俺比较迟钝,俺的理解是:
2个<>之间,如果有“或‘匹配到”或’结束;或者匹配之间非“‘〉的字符。
再次感谢muxrwc的帮助。
APM60- 2007-03-15
  • 打赏
  • 举报
回复
多谢,学习中……
muxrwc 2007-03-15
  • 打赏
  • 举报
回复
我那个不好用么?
innerText貌似不兼容非IE浏览器的说。
APM60- 2007-03-15
  • 打赏
  • 举报
回复
头一次提问,分不多怕分不匀,匆忙中先给分结帖。
感谢回复。上网查资料学习innerText和“把转义替换成特殊字符”中……
可能的话也不想浪费别人太多时间,只是innerText和“把转义替换成特殊字符”不太明白怎么用。如果有时间各位大哥稍微解释一下,或者告诉我到哪查找相关资料,多谢。
muxrwc 2007-03-15
  • 打赏
  • 举报
回复
忽想起。。HTML里没有转义。。
微风吹过。。。
muxrwc 2007-03-15
  • 打赏
  • 举报
回复
呵,测了下。。通过的说。。
不过没有处理转义(很懒的说)。。。嘿嘿。
<script type="text/javascript">
var string = '……<img onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" src=……(省略) >……';
var p = /<(?:(["'])[^\1]*\1|[^>'"]*)+>/g;
var j = string.replace(p, "wc");
alert(j);
</script>
muxrwc 2007-03-15
  • 打赏
  • 举报
回复
首先把转义替换成特殊字符。
然后在<(?:[^>]+|(["'])[^\1]*\1)+>全部kill掉。。
然后在按特殊字符把转义都替换回来。。。
fuchenladenfu 2007-03-15
  • 打赏
  • 举报
回复
mark下
jinjuduo 2007-03-14
  • 打赏
  • 举报
回复
看看大于号附近的单词有没有规律,如果有的的话用正则表达式的后向引用
?: 或?!试试
mmcgzs 2007-03-14
  • 打赏
  • 举报
回复
innerText处理一下
hbhbhbhbhb1021 2007-03-14
  • 打赏
  • 举报
回复
这个不是很容易,要具体情况看。正常来讲,按照2.0的标准,这里的大于号是需要转意的,那样的话就不存在这些问题

87,924

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧