替换格式:
<(空格或没有)script(空格或没有)任意1>任意2<(空格或没有)/script(空格或没有)>替换格式分解:
字符1:<
字符2:空格或者没有
字符3:script
字符4:空格或没有
字符5:任意字符
字符6:>
字符7:任意字符
字符8:空格或者没有
字符9:/script
字符10:空格或没有
字符11:>需要结果:
1.将任意1和任意2中包含"符号的都变成'
2.将<变成<
2.将>变成>需求原因:
其实就是想把script替换成页面上显示的。但由于种种原因不能直接全文替换<和"例如:<script src="xxx.js" type="text/javascript"></script>
结果:<script src='xxx.js' type='text/javascript'></script>例如:< script src="xxx.js" type="text/javascript">< /script >
结果:< script src='xxx.js' type='text/javascript'>< /script >例如:<script>alert("123");</script>
结果:<script>alert("123");</script>
例如:<script language="JavaScript1.2"> alert("123");</script>
结果:<script language='JavaScript1.2'>alert("123");</script>
<(空格或没有)script(空格或没有)任意1>任意2<(空格或没有)/script(空格或没有)>替换格式分解:
字符1:<
字符2:空格或者没有
字符3:script
字符4:空格或没有
字符5:任意字符
字符6:>
字符7:任意字符
字符8:空格或者没有
字符9:/script
字符10:空格或没有
字符11:>需要结果:
1.将任意1和任意2中包含"符号的都变成'
2.将<变成<
2.将>变成>需求原因:
其实就是想把script替换成页面上显示的。但由于种种原因不能直接全文替换<和"例如:<script src="xxx.js" type="text/javascript"></script>
结果:<script src='xxx.js' type='text/javascript'></script>例如:< script src="xxx.js" type="text/javascript">< /script >
结果:< script src='xxx.js' type='text/javascript'>< /script >例如:<script>alert("123");</script>
结果:<script>alert("123");</script>
例如:<script language="JavaScript1.2"> alert("123");</script>
结果:<script language='JavaScript1.2'>alert("123");</script>
String str = "<script src=\"xxx.js\" type=\"text/javascript\"> </script>" ;
System.out.println(str.replace("<", "<").replace(">",">"));
<script language='JavaScript1.2'>alert("123");</script>alert("123") 应该是任意 2 的吧,不用变成单引号?另外,任意 2 中如果有 < > 需要换成 < > 么?
<script language='JavaScript1.2'>alert("123");</script> alert("123") 应该是任意 2 的吧,不用变成单引号? 答:要变...copy着急了没修改
应该为<script language='JavaScript1.2'>alert('123');</script> 2.另外,任意 2 中如果有 < > 需要换成 < > 么? 答:需要
再次感谢啊
// <(空格或没有)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)?>";
String words = "<scropt src=\"xxx.js\" type=\"text/javascript\"></script>" ;
words = words.replace("<","<").replace(">",">").replace("\"","\'");
System.out.println(words);
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("<([^>]*)>", "<$1>").replaceAll("\"([^\"]*)\"", "'$1'");
matcher.appendReplacement(sb, t);
}
matcher.appendTail(sb);
System.out.println(sb.toString());
}
}