JavaScript,HTML 如何用正则表达式去除字符串中的HTML标记??[以前的帖子...

来源:百度文库 编辑:神马文学网 时间:2024/03/29 00:10:41
 
JavaScript,HTML 如何用正则表达式去除字符串中的HTML标记??[以前的帖子都没有完全解决]
问题 于 2006-09-14 18:43
从网上找到了如下版本:
1."<[^>]+>|]+>"
2."<\/*[^<>]*>"
3."<(.*)>.*<\/\1>|<(.*) \/>"
都无法正确地从以下字符串中得到文字内容:
texttexttext
应该再加上点条件限制就行了,可是我就是搞不定,所以还请高人指点啊!
响应者 1:
问题出在
第一个,少了转意字符\
第二个,贪婪模式所以不行
第三个,中间有回车换行符,.是不能匹配的
响应者 2:
还有些问题,问题很有意思
响应者 3:

响应者 4:
找了一个老外写的,也不行 :(
"<[^>]*(>|$)/"
响应者 5:
To 楼上的三星:
你的愿望是美好的,做起来是不可能滴。我是要在别处使用此表达式,不是在浏览器里 :(
还是表示感谢 ,呵呵
响应者 6:
/<\/?[^<>]+>/g
响应者 7:
To meizz :
感谢回复!
但,还是不行......
响应者 8:
因为里面有大于号,如果是纯正则,那还要想想
响应者 9:
代码我是测试过的。


响应者 10:
这个问题还要具体情况具体分析下,比如具体的情况中,中间的内容中肯定没有>字符等等条件,
如果是上面的条件可以用下面的代码。
单凭现在的条件用一个正则很难实现,用多个到是可以的,首先先把奇数的"和‘全替换成别的特殊字符,然后替换特殊字符+ .*? + > + .*? + ["‘],然后用上面的正则替换掉<>之间的内容就可以了,类似一个小型的语法分析器

响应者 11:
我想应该是这样的匹配规则:
左尖括号+若干多字符+下一个左尖括号之前的最后一个右括号
在此之间的全部认为是Match的。
响应者 12:
/(?:)((\n|\r|.)*?)(?:<\/html>)/
响应者 13:
没看清楚题目:sorry



响应者 14:
上面我的还有些问题 改成re=/<.+?(>(?=((([^>]*?)<)|(\s*$))))/g
可惜这个匹配不了文本中包含>这个的情况
\/?应该可以去掉吧
响应者 15:
梅钻的思路应该是=后面的“”或‘’吧,但是如果有下面这种就匹配不了了



响应者 16:
我终于知道红钻是怎么炼成的了 :)
太谢谢meizz(梅花雪)了!!!
meizz写的表达式至少能够处理90%的情况!
对于这个问题我已经比较满意了,就算是已经解决了,
再放两天,给大伙看看后就结帖,哈哈
响应者 17:
To 天外水火(我要多努力)) :
我说的没能处理的那10%就是你所说的情况,name后面没有引号,就会出问题。
响应者 18:
做老本行,研究了下梅老大的代码,我改了点,:)



响应者 19:
在上述情况下,等号后面的值中,如果有“>”的话,则这个右尖括号单纯从字符角度看,和html标记的右尖括号似乎已经没有区别了。
PS:写程序的是应该追求完美,但总是这样麻烦别人,我还是有点过意不去的:) 不过meizz能再完善一下那就最好拉,哈哈,再次感谢 !
响应者 20:
哈哈,更加感谢天外水火!
现在的代码很完美啊,暂时没有发现问题 :)
响应者 21:
AO,一个小问题:
30)alert(‘too big‘) name=asd>texttexttext
不能正确匹配....这就是我说的“在上述情况下,等号后面的值中,如果有‘>’的话....”
响应者 22:
恐怕这种情况html解析也应该从中间的>结束吧,后面的>应该算在页面内容中
响应者 23:
晕倒,没人理我
正则:/(?:)((\n|\r|.)*?)(?:<\/html>)/
代码:

响应者 24:
AO,一个小问题之二:
texttexttext
这句正确匹配。(变化体现在name中,现在name的值是“asd>texttexttext
这句就错了 :( (现在name的值是“as>d”)
嘿嘿,俺是不是心黑了点?
响应者 25:
对于有转义的 \" \" 还是不行:



响应者 26:
To zhangfmIT():
哈哈,不是不理你,是你的代码在我这边运行不了,总出错,所以我也没法试验了啊
而且,我主要是来问如何从
texttexttext
里用正则表达式取出“texttexttext”的,呵呵
响应者 27:
sorry,偶也看错了
响应者 28:
对于有转义的 \" \" 还是不行:
-----------------------------------
恐怕这里不能用[^]这个来匹配了,觉得?!这种应该可以
响应者 29:
呵呵,加这个东西应该没有问题,只是我想试试不用非贪婪和预查,是否也能解决问题
响应者 30:
To zhangfmIT() again:
你的代码可以运行起来,不过需要改为
响应者 37:
上面很多的测试内容只是举个例子,有的地方有一些语法错误
[!\w\-:]是因为\w不能包含!、:、-字符
响应者 38:

都是强人,晕中~
响应者 39:
真是感谢大家的热心解答啊,哈哈,谢谢谢谢 !!!
响应者 40:
感谢强人。。。留影。收藏。。。。。。
响应者 41:
我用.NET是这么做的!
strCNLetter = Regex.Replace(strMyhtml,"<[^>]*>", "");
strCNLetter = Regex.Replace(strCNLetter,"\\s+", " ");//替换空格
响应者 42:
都跑首页上去了,mark下
响应者 43:
又有新突破,我在国外的网站上,找到了php中,strip_tags()函数所使用的正则表达式了,如下:
\s]+))?)+\s*|\s*)/?>
似乎比楼上几位大大的要简练一些,而且那此敏感字符都能够被正确处理。
此表达式,值得收藏!!!!
响应者 44:
╭═══╮ ╭═══╮ ╭══════╮
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮
║ ║   ║ ║   ║ ║  ╰╮╰╮
║ ║   ║ ║   ║ ║   ║ ║
║ ║   ║ ║   ║ ║  ╭╯╭╯
║ ║   ║ ║   ║ ╰══╯╭╯
║ ║   ║ ║   ║ ╭═══╯
║ ║   ║ ║   ║ ║
╰╮╰╮ ╭╯╭╯   ║ ║
╰╮╰═╯╭╯   ╭╯ ╰╮
╰═══╯    ╰═══╯
响应者 45:
╭═══╮ ╭═══╮ ╭══════╮
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮
║ ║   ║ ║   ║ ║  ╰╮╰╮
║ ║   ║ ║   ║ ║   ║ ║
║ ║   ║ ║   ║ ║  ╭╯╭╯
║ ║   ║ ║   ║ ╰══╯╭╯
║ ║   ║ ║   ║ ╭═══╯
║ ║   ║ ║   ║ ║
╰╮╰╮ ╭╯╭╯   ║ ║
╰╮╰═╯╭╯   ╭╯ ╰╮
╰═══╯    ╰═══╯
响应者 46:
看了一下你后来提供的这个正则,说实话还不如我的正确度高:
\".*?\" 匹配不了换行符的,所以没有 \"[^\"]*\" 好。
且我一直避免使用 ?: 这种预查功能是为了兼容 IE5.0
响应者 47:
引用
呵呵,加这个东西应该没有问题,只是我想试试不用非贪婪和预查,是否也能解决问题
-----------------------------------------------------------
上边这句应该是有含义的,我涉足程序的时间比较短,对版本方面的知识还要多学习,查了下资料,手头上没有低版本的机器,没办法测试,帖出来大家看看
非贪婪匹配 ie5.0以上(不含5.0)
预查 ie5.0以上(不含5.0)
replace()function返回不同的匹配值 5.5以上
响应者 48:
能否直接替换掉texttexttext?