替换格式:
<(空格或没有)script(空格或没有)任意1>任意2<(空格或没有)/script(空格或没有)>替换格式分解:
字符1:<
字符2:空格或者没有
字符3:script
字符4:空格或没有
字符5:任意字符
字符6:>
字符7:任意字符
字符8:空格或者没有
字符9:/script
字符10:空格或没有
字符11:>需要结果:
1.将任意1和任意2中包含"符号的都变成'
2.将<变成&lt;
2.将>变成&gt;需求原因:
其实就是想把script替换成页面上显示的。但由于种种原因不能直接全文替换<和"例如:<script src="xxx.js" type="text/javascript"></script>
结果:&ltscript src='xxx.js' type='text/javascript'&gt;&lt/script&gt;例如:<  script   src="xxx.js" type="text/javascript">< /script >
结果:&lt  script src='xxx.js' type='text/javascript'&gt;&lt /script &gt;例如:<script>alert("123");</script>
结果:&ltscript&gtalert("123");&lt/script&gt
例如:<script language="JavaScript1.2"> alert("123");</script>
结果:&ltscript language='JavaScript1.2'&gtalert("123");&lt/script&gt

解决方案 »

  1.   


    String str = "<script src=\"xxx.js\" type=\"text/javascript\"> </script>" ;
    System.out.println(str.replace("<", "&lt").replace(">","&gt"));
      

  2.   

    <(空格或没有)script(空格或没有)任意1>任意2 <(空格或没有)/script(空格或没有)> 1.将任意1和任意2中包含"符号的都变成' 示例 
    &ltscript language='JavaScript1.2'&gtalert("123");&lt/script&gtalert("123") 应该是任意 2 的吧,不用变成单引号?另外,任意 2 中如果有 < > 需要换成 &lt; &gt; 么?
      

  3.   

    <(空格或没有)script(空格或没有)任意1>任意2 <(空格或没有)/script(空格或没有)> 1.将任意1和任意2中包含"符号的都变成' 示例 
    &ltscript language='JavaScript1.2'&gtalert("123");&lt/script&gt alert("123") 应该是任意 2 的吧,不用变成单引号? 答:要变...copy着急了没修改
    应该为&ltscript language='JavaScript1.2'&gtalert('123');&lt/script&gt 2.另外,任意 2 中如果有 < > 需要换成 &lt; &gt; 么? 答:需要
    再次感谢啊
      

  4.   


    // <(空格或没有)script(空格或没有)任意1>任意2 <(空格或没有)/script(空格或没有)> 
    // 正则表达式形式如下:
    // < 对应本身 <
    // 空格或没有 对应 \t (?表示出现或者不出现)
    // script 对应本身 script
    // 空格或没有 对应 \t (?表示出现或者不出现)
    // 任意1 对应 任意1
    // > 对应本身 >
    // 任意2 对应 任意2
    // < 对应本身 <
    // 空格或没有 对应 \t (?表示出现或者不出现)
    // /script 对应本身 /script
    // 空格或没有 对应 \t (?表示出现或者不出现)
    // > 对应本身 >
    String exp = "<(\\t)?script(\\t)?任意1>任意2<(\\t)?/script(\\t)?>";
      

  5.   


    String words = "<scropt src=\"xxx.js\" type=\"text/javascript\"></script>" ;
    words = words.replace("<","&lt").replace(">","&gt").replace("\"","\'");
    System.out.println(words);
      

  6.   

    CSDN 回复时咋老是出错啊?import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Replacement { public static void main(String[] args) {
            
            String str=
                    "test\n" +
                    "<script src=\"xxx.js\" type=\"text/javascript\"></script>\n" +
                    "<script  src=\"xxx.js\" type=\"text/javascript\"><h1 class=\"test\">test" +
                    "  <img src=\"http://www.google.cn/images/nav_logo3.png\"></h1>< /script >\n" +
                    "<script>alert(\"123\");</script>\n" +
                    "<script language=\"JavaScript1.2\">alert(\"123\");</script>\n" +
                    "<a href=\"http://www.google.com\">Google<img src=\"http://www.google.cn/images/nav_logo3.png\"></a>";        
            String regex1 = "<\\s*(?i:script).*?<\\s*/\\s*(?i:script)\\s*>";
            
            Pattern pattern = Pattern.compile(regex1);
            Matcher matcher = pattern.matcher(str);
            StringBuffer sb = new StringBuffer();
            while(matcher.find()) {
                String t = matcher.group();
                t = t.replaceAll("<([^>]*)>", "&lt;$1&gt;").replaceAll("\"([^\"]*)\"", "'$1'");
                matcher.appendReplacement(sb, t);
            }
            matcher.appendTail(sb);
            System.out.println(sb.toString());
        }
    }