对正则不太熟,现在需要实现如下描述功能;
function saveData(){
var sid="10001";
save();
}
现要求save()函数后不能存在有效代码,例如
function saveData(){
var sid="10001";
save();
alert("save");//保存后的提示
}
不能存在alert("save");但可以存在注释“保存后的提示”;
请熟悉正则的朋友给个思路,用其他方法实现也行,谢谢!!
function saveData(){
var sid="10001";
save();
}
现要求save()函数后不能存在有效代码,例如
function saveData(){
var sid="10001";
save();
alert("save");//保存后的提示
}
不能存在alert("save");但可以存在注释“保存后的提示”;
请熟悉正则的朋友给个思路,用其他方法实现也行,谢谢!!
解决方案 »
- 在struts2的action中使用axis调用webservice出错
- Struts 跳转 result
- 在MyEclipse 6.0中为什么会出现以前项目的错误?
- 简单:帮忙一下
- eclipse中如何生成hibernate的映射文件??
- 去华为作j2ee有前途么
- 大虾们谈谈排序问题,从第一次从数据库中得到数据有默认排序方式封装到对象中去,在前台可以有多种排序方法,条件是不能再从数据库中得到
- 这样的系统您开价多少?
- jbuilder7+weblogic7,在调试jbuilder7带的例子时候,如何配置datasource?
- 推荐一本EJB的好书把 我散分
- 在公司里大家是如何缩进代码的?
- 将从数据库中查出来的数据保存在list里,再次调用这个list时如何不要再查数据库
楼主就规定save();后只能是空白符与},这样简单些。
如下:
String source = "function saveData(){\n var sid=\"10001\";\n save(); \n \n}";
String reg = "(?s).*save\\(\\);(?=[\\s]*[}]).*"; // save();后只允许}结束,允许夹杂空白字符和换行符
System.out.println(source.matches(reg));
source = "function saveData(){\n var sid=\"10001\";\n save(); \n//sample \n}";
System.out.println(source.matches(reg));
因为注释,空白的情况太多,正则不一定考虑周全
给段代码例子
public class Test {
public static void main(String[] args) throws Throwable {
String separator = System.getProperty("line.separator");
String content = "function saveData(){" + separator +
" var sid=\"10001\";" + separator +
" test1();" + separator +
" save(); //test2" + separator +
"/*\ntest3\n*/" + separator +
"//test4" + separator +
//" test2();" + separator +
"}";
content = content.replaceAll("(?s).*?save[(][)];(.*?})", "$1"); //获取save()后面的字符串
//System.out.println(content);
if (content.matches("((\\s*//.*?\\s+)*((?s)\\s*/[*].*?[*]/\\s*)*)*\\s*[}]")) {
System.out.println("ok"); //判断save后面的字符串是不是注释或空白
} else {
System.out.println("error");
}
}
}