求一个javascript的正则表达式,能过滤掉所有能造成javascript运行出错的代码,谢谢。

解决方案 »

  1.   

    如将“<”替换成“&lt;”等等。
    应该有不少要替换,包括符号和保留字。
    希望替换后,能将文本内容为一个JS代码的文本,也能完全显示出来。
      

  2.   

    甚至替换后,能用JS在浏览器中显示JS代码本身:
    function FilterScripts(content)
        {
            var sz = "";
            sz = content.replace(/<script(.|\n)*\/script>\s*/ig, "");
            sz = sz.replace( /<[^>]+/ig, function($0){return $0.replace(/\s*on\w+=[^ ]+/ig, "")});
            return sz;
        }
      

  3.   

    能造成javascript运行出错的代码?太难了吧。
    一个除数为0就可以造成javascript运行出错。
    还有其它浏览器本身的错误也可以以造成javascript运行出错。
    你把代码写规范一点就好了。
      

  4.   

    这种事情怎么可能做到?
    比如alert.innerHTML="1245" 是错误的,这不仅仅是正侧表达式不能做到,可能出现错误的情况比正确的情况还多,理论上应该也无法判断的吧!
      

  5.   

    原来这么难么?
    我只是希望下面document.getElementById("to").innerHTML=文本内容 这样的情况下不会出错。
    不是替换掉敏感符号和敏感字符可以做到的么?那如何处理才比较科学呢?
      

  6.   

    比如用JS调用远程的整篇技术文档,连同其中出示的JS代码都可以正常显示,这好像有很多网站是这样做的吧?
      

  7.   

    原意是用JS处理XML,发现XML结点中的文本字符不能有"<"号,并且在读出时替换也不行。<ggg>
    <heading>(这里是需要读取的很长的)文本内容</heading>
    </ggg>
      

  8.   

    写个DEMO 你自己修改下吧
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Untitled Document</title>
    <script id="aa" LANGUAGE="javascript" type="text/javascript" >
    function response() {
     document.getElementById("t").innerHTML = document.getElementById("test").value.replace(/([<>])/g,function(t){
      if(t == "<") {
    return "&lt;"
    } else {
    return "&gt;"
    }

     });
    //  
    }</script> </head>
    <body>
    <input type="text" id="test" /><input type="button" value="submit" onclick="response()" />
    <div id="t">

    </div>
    </body>
    </html>