通过正则表达式过滤script字符串报 java.lang.StackOverflowError错误

龙根 2008-07-21 11:05:56
问一个正则表达式的溢出问题:
通过正则表达式替换字符串报 java.lang.StackOverflowError:
Public static String wipeString(input){
String re="<(\\s)*script(.|\\n(<?!script))*\\/script>(\\s)*";
Pattern p=Pattern.compile(re,Pattern.dotall+Pattern.multline);
Matcher m=p.matcher(input);
return input.replaceAll("");
}
,字数大概少于2000字符时没问题,多了就报java.lang.StackOverflowError:
,设置了或不设置flag为Pattern.dotall+Pattern.multline都没效果,寻求高手解惑
...全文
249 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙根 2008-07-23
  • 打赏
  • 举报
回复
在jquery中找到一个过滤script的正则表达式,证实可以过滤嵌套的
如:str.replace(/<script(.|\s)*?\/script(\s)*>/gi,"")
  • 打赏
  • 举报
回复
哈哈,我就想到你用 .|\\n 了,不能用这个,直接使用 . 加上 Pattern.DOTALL 就可以了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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