Jelajahi Sumber

正则测试功能

zhangjinkun 6 tahun lalu
induk
melakukan
6c9d1a84ff

+ 22 - 0
src/jy/admin/rule.go

@@ -3,6 +3,7 @@ package admin
 
 import (
 	"fmt"
+	"jy/extract"
 	. "jy/mongodbutil"
 	"jy/util"
 	"regexp"
@@ -107,6 +108,27 @@ func init() {
 	Admin.POST("/ruletag/save", RuleTagSave)
 	Admin.POST("/ruletag/del", RuleTagDel)
 	Admin.POST("/ruletag/editsave", RuleTagEditSave)
+
+	//正则规则验证
+	Admin.POST("/check/prerule", func(c *gin.Context) {
+		rule, _ := c.GetPostForm("s_rule")
+		con, _ := c.GetPostForm("s_testcon")
+		str := extract.PreRulesCheckReg(con, rule)
+		c.JSON(200, gin.H{"rep": str})
+	})
+	Admin.POST("/check/extrule", func(c *gin.Context) {
+		rule, _ := c.GetPostForm("s_rule")
+		con, _ := c.GetPostForm("s_testcon")
+		field, _ := c.GetPostForm("s_field")
+		tmp := extract.ExtRulesCheckReg(field, con, rule)
+		c.JSON(200, gin.H{"rep": tmp})
+	})
+	Admin.POST("/check/backrule", func(c *gin.Context) {
+		rule, _ := c.GetPostForm("s_rule")
+		con, _ := c.GetPostForm("s_testcon")
+		str := extract.BackRulesCheckReg(con, rule)
+		c.JSON(200, gin.H{"rep": str})
+	})
 }
 
 func RulePreData(c *gin.Context) {

+ 65 - 0
src/jy/extract/extractcheck.go

@@ -0,0 +1,65 @@
+// extractcheck
+package extract
+
+import (
+	qu "qfw/util"
+	"regexp"
+	"strings"
+)
+
+//前置过滤检查
+func PreRulesCheckReg(content, ruleText string) string {
+	tmp := strings.Split(ruleText, "__")
+	if len(tmp) == 2 {
+		reg := regexp.MustCompile(tmp[0])
+		return reg.ReplaceAllString(content, tmp[1])
+	} else {
+		reg := regexp.MustCompile(tmp[0])
+		return reg.ReplaceAllString(content, "")
+	}
+}
+
+//后置过滤检查
+func BackRulesCheckReg(content, ruleText string) string {
+	tmp := strings.Split(ruleText, "__")
+	if len(tmp) == 2 {
+		reg := regexp.MustCompile(tmp[0])
+		return reg.ReplaceAllString(content, tmp[1])
+	} else {
+		reg := regexp.MustCompile(tmp[0])
+		return reg.ReplaceAllString(content, "")
+	}
+}
+
+//抽取检查
+func ExtRulesCheckReg(field, content, ruleText string) map[string]string {
+	rep := map[string]string{}
+	tmp := strings.Split(ruleText, "__")
+	if len(tmp) == 2 {
+		epos := strings.Split(tmp[1], ",")
+		posm := map[string]int{}
+		for _, v := range epos {
+			ks := strings.Split(v, ":")
+			if len(ks) == 2 { //(.*)招标公告(.*)__2:projectname,4:area
+				posm[ks[1]] = qu.IntAll(ks[0])
+			} else {
+				posm[field] = qu.IntAll(ks[0])
+			}
+		}
+		reg := regexp.MustCompile(tmp[0])
+		apos := reg.FindAllStringSubmatchIndex(content, -1)
+		if len(apos) > 0 {
+			pos := apos[0]
+			for k, p := range posm {
+				if len(pos) > p {
+					if pos[p] == -1 || pos[p+1] == -1 {
+						continue
+					}
+					val := content[pos[p]:pos[p+1]]
+					rep[k] = val
+				}
+			}
+		}
+	}
+	return rep
+}

+ 20 - 0
src/main_test.go

@@ -25,6 +25,26 @@ func Test_reg(t *testing.T) {
 		log.Println(k, v[1])
 	}
 }
+func Test_checkreg(t *testing.T) {
+	context := ` 项目名称:      新碶街道2018年美女姜河、向家村河、塘湾河①河道清淤工程招标公告`
+	rule := `(.*)项目名称[::][\n\s ]{0,10}__`
+	str := extract.PreRulesCheckReg(context, rule)
+	log.Println(str)
+	rule = `(.*)招标公告__$1`
+	str = extract.BackRulesCheckReg(str, rule)
+	log.Println(str)
+
+	context = `新碶街道2018年美女姜河、向家村河、塘湾河①河道清淤工程招标公告郑州`
+	rule = `(.*)招标公告(.*)__2:projectname,4:city`
+	tmp := extract.ExtRulesCheckReg("projectname", context, rule)
+	log.Println(tmp)
+
+	rule = `(关于|就)?(.{6,70})(招标|中标|成交|延期|变更)公告__4`
+	context = `关于新碶街道2018年美女姜河、向家村河、塘湾河①河道清淤工程招标公告`
+	tmp = extract.ExtRulesCheckReg("projectname", context, rule)
+	log.Println(tmp)
+}
+
 func Test_paths(t *testing.T) {
 	Mgo = MgoFactory(1, 3, 120, "192.168.3.207:27082", "extract_v3")
 	tracks := track.GetTrackPath("5b8dd276a5cb26b9b7faaa7c", "projectname", "v3_track")

+ 56 - 32
src/web/templates/admin/rule_backlist.html

@@ -98,6 +98,37 @@ $(function () {
 		$(".opr").click(function(){
 			var n=$(this).attr("opr")
 			var htmlObj={},obj,tag=[]
+			var bts=[{label:"保存",class:"btn-primary",
+							fun:function(){
+								var obj={}
+								var bcon=true
+								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+									var val=$(el).val();
+									if(el.id=="s_luascript"){
+										val=editor_1.getValue()
+										obj[el.id]=val
+									}else{
+										obj[el.id]=$(el).val()
+									}
+									if(el.id!="_id"&&$(el).attr("must")&&!val){
+										bcon=false
+										return false
+									}
+								})
+								if (bcon){								
+									$.post("/admin/ruleback/save",obj,function(data){
+										if(data&&data.rep){
+											window.location.href="/admin/ruleback?version={{.version}}"								
+										}else{
+											showTip(data.msg,1000)
+										}
+									},'json')
+								}else{
+									alert("红色标签的表单不能为空!")
+								}
+							}
+						}
+					]
 			var _tit="" 
 			switch(n){
 			case "edit":			
@@ -109,6 +140,7 @@ $(function () {
 				comtag=[{label:"名称",s_label:"s_name",placeholder:"",must:true},{label:"描述",s_label:"s_descript",type:"tpl_text"}]
 				regtag=[{label:"字段",s_label:"s_field",type:"tpl_list_local",url:"/admin/getfields"},{label:"正则",s_label:"s_rule",type:"tpl_text",must:true}]
 				luatag=[{label:"脚本",s_label:"s_luascript",type:"tpl_text",must:true}]
+				testcon=[{label:"测试内容",s_label:"s_testcon",type:"tpl_text",must:true}]
 				hiddentag=[{s_label:"_id",type:"tpl_hidden"},{s_label:"s_version",type:"tpl_hidden"},{s_label:"s_type",type:"tpl_hidden"}]
 				islua=false
 				tag = com.pushArry(tag,comtag)
@@ -116,6 +148,29 @@ $(function () {
 					_tit="编辑-"+obj.s_name
 					tag = com.pushArry(tag,regtag)
 					tag = com.pushArry(tag,hiddentag)
+					tag = com.pushArry(tag,testcon)
+					check=[{label:"测试",class:"btn-warning",
+								fun:function(){
+									var obj={}
+									var bcon=true
+									$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+										var val=$(el).val(); 
+										obj[el.id]=$(el).val()
+										if(el.id!="_id"&&$(el).attr("must")&&!val){
+											bcon=false
+											return false
+										}
+									})
+									if (bcon){								
+										$.post("/admin/check/backrule",obj,function(data){
+											showMsg(data.rep)
+										},'json')
+									}else{
+										alert("红色标签的表单不能为空!")
+									}
+								}
+							}]
+					bts = com.pushArry(bts,check)
 				}else if(n=="editlua"){
 					_tit="编辑-"+obj.s_name
 					islua=true
@@ -139,38 +194,7 @@ $(function () {
 					title:_tit,
 					tag:tag,
 					lua:islua,
-					bts:[
-						{label:"保存",class:"btn-primary",
-							fun:function(){
-								var obj={}
-								var bcon=true
-								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
-									var val=$(el).val();
-									if(el.id=="s_luascript"){
-										val=editor_1.getValue()
-										obj[el.id]=val
-									}else{
-										obj[el.id]=$(el).val()
-									}
-									if(el.id!="_id"&&$(el).attr("must")&&!val){
-										bcon=false
-										return false
-									}
-								})
-								if (bcon){								
-									$.post("/admin/ruleback/save",obj,function(data){
-										if(data&&data.rep){
-											window.location.href="/admin/ruleback?version={{.version}}"								
-										}else{
-											showTip(data.msg,1000)
-										}
-									},'json')
-								}else{
-									alert("红色标签的表单不能为空!")
-								}
-							}
-						}
-					]
+					bts:bts
 				}
 			OpenDialog(htmlObj,obj)
 			break;

+ 56 - 32
src/web/templates/admin/rule_logicbacklist.html

@@ -99,6 +99,37 @@ $(function () {
 		$(".opr").click(function(){
 			var n=$(this).attr("opr")
 			var htmlObj={},obj,tag=[]
+			var bts=[{label:"保存",class:"btn-primary",
+							fun:function(){
+								var obj={}
+								var bcon=true
+								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+									var val=$(el).val();
+									if(el.id=="s_luascript"){
+										val=editor_1.getValue()
+										obj[el.id]=val
+									}else{
+										obj[el.id]=$(el).val()
+									}
+									if(el.id!="_id"&&$(el).attr("must")&&!val){
+										bcon=false
+										return false
+									}
+								})
+								if (bcon){								
+									$.post("/admin/logicback/save",obj,function(data){
+										if(data&&data.rep){
+											window.location.href="/admin/logicback?vid={{.vid}}&pid={{.pid}}&sid={{.sid}}"								
+										}else{
+											showTip(data.msg,1000)
+										}
+									},'json')
+								}else{
+									alert("红色标签的表单不能为空!")
+								}
+							}
+						}
+					]
 			var _tit="" 
 			switch(n){
 			case "edit":			
@@ -110,6 +141,7 @@ $(function () {
 				comtag=[{label:"名称",s_label:"s_name",placeholder:"",must:true},{label:"描述",s_label:"s_descript",type:"tpl_text"}]
 				regtag=[{label:"字段",s_label:"s_field",type:"tpl_list_local",url:"/admin/getfields",default:{{.field}}},{label:"正则",s_label:"s_rule",type:"tpl_text",must:true}]
 				luatag=[{label:"脚本",s_label:"s_luascript",type:"tpl_text",must:true}]
+				testcon=[{label:"测试内容",s_label:"s_testcon",type:"tpl_text",must:true}]
 				hiddentag=[{s_label:"_id",type:"tpl_hidden"},{s_label:"vid",type:"tpl_hidden"},{s_label:"pid",type:"tpl_hidden"},{s_label:"sid",type:"tpl_hidden"},{s_label:"s_type",type:"tpl_hidden"}]
 				islua=false
 				tag = com.pushArry(tag,comtag)
@@ -117,6 +149,29 @@ $(function () {
 					_tit="编辑-"+obj.s_name
 					tag = com.pushArry(tag,regtag)
 					tag = com.pushArry(tag,hiddentag)
+					tag = com.pushArry(tag,testcon)
+					check=[{label:"测试",class:"btn-warning",
+								fun:function(){
+									var obj={}
+									var bcon=true
+									$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+										var val=$(el).val(); 
+										obj[el.id]=$(el).val()
+										if(el.id!="_id"&&$(el).attr("must")&&!val){
+											bcon=false
+											return false
+										}
+									})
+									if (bcon){								
+										$.post("/admin/check/backrule",obj,function(data){
+											showMsg(data.rep)
+										},'json')
+									}else{
+										alert("红色标签的表单不能为空!")
+									}
+								}
+							}]
+					bts = com.pushArry(bts,check)
 				}else if(n=="editlua"){
 					_tit="编辑-"+obj.s_name
 					islua=true
@@ -140,38 +195,7 @@ $(function () {
 					title:_tit,
 					tag:tag,
 					lua:islua,
-					bts:[
-						{label:"保存",class:"btn-primary",
-							fun:function(){
-								var obj={}
-								var bcon=true
-								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
-									var val=$(el).val();
-									if(el.id=="s_luascript"){
-										val=editor_1.getValue()
-										obj[el.id]=val
-									}else{
-										obj[el.id]=$(el).val()
-									}
-									if(el.id!="_id"&&$(el).attr("must")&&!val){
-										bcon=false
-										return false
-									}
-								})
-								if (bcon){								
-									$.post("/admin/logicback/save",obj,function(data){
-										if(data&&data.rep){
-											window.location.href="/admin/logicback?vid={{.vid}}&pid={{.pid}}&sid={{.sid}}"								
-										}else{
-											showTip(data.msg,1000)
-										}
-									},'json')
-								}else{
-									alert("红色标签的表单不能为空!")
-								}
-							}
-						}
-					]
+					bts:bts
 				}
 			OpenDialog(htmlObj,obj)
 			break;

+ 56 - 32
src/web/templates/admin/rule_logicore.html

@@ -113,6 +113,37 @@ $(function () {
 		$(".opr").click(function(){
 			var n=$(this).attr("opr")
 			var htmlObj={},obj,tag=[]
+			var bts=[{label:"保存",class:"btn-primary",
+							fun:function(){
+								var obj={}
+								var bcon=true
+								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+									var val=$(el).val();
+									if(el.id=="s_luascript"){
+										val=editor_1.getValue()
+										obj[el.id]=val
+									}else{
+										obj[el.id]=$(el).val()
+									}
+									if(el.id!="_id"&&$(el).attr("must")&&!val){
+										bcon=false
+										return false
+									}
+								})
+								if (bcon){								
+									$.post("/admin/logicore/save",obj,function(data){
+										if(data&&data.rep){
+											window.location.href="/admin/logicore?vid={{.vid}}&pid={{.pid}}&sid={{.sid}}"					
+										}else{
+											showTip(data.msg,1000)
+										}
+									},'json')
+								}else{
+									alert("红色标签的表单不能为空!")
+								}
+							}
+						}
+					]
 			var _tit="" 
 			switch(n){
 			case "edit":			
@@ -124,6 +155,7 @@ $(function () {
 				comtag=[{label:"名称",s_label:"s_name",placeholder:"",must:true},{label:"描述",s_label:"s_descript",type:"tpl_text"},{label:"启用",s_label:"isuse",type:"tpl_list_local",list:[{"s_name":"是","_id":true},{"s_name":"否","_id":false}],default:true}]
 				regtag=[{label:"字段",s_label:"s_field",type:"tpl_list_local",url:"/admin/getfields",default:{{.field}}},{label:"正则",s_label:"s_rule",type:"tpl_text",must:true}]
 				luatag=[{label:"脚本",s_label:"s_luascript",type:"tpl_text",must:true}]
+				testcon=[{label:"测试内容",s_label:"s_testcon",type:"tpl_text",must:true}]
 				hiddentag=[{s_label:"_id",type:"tpl_hidden"},{s_label:"vid",type:"tpl_hidden"},{s_label:"pid",type:"tpl_hidden"},{s_label:"sid",type:"tpl_hidden"},{s_label:"s_type",type:"tpl_hidden"}]
 				islua=false
 				tag = com.pushArry(tag,comtag)
@@ -131,6 +163,29 @@ $(function () {
 					_tit="编辑-"+obj.s_name
 					tag = com.pushArry(tag,regtag)
 					tag = com.pushArry(tag,hiddentag)
+					tag = com.pushArry(tag,testcon)
+					check=[{label:"测试",class:"btn-warning",
+								fun:function(){
+									var obj={}
+									var bcon=true
+									$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+										var val=$(el).val(); 
+										obj[el.id]=$(el).val()
+										if(el.id!="_id"&&$(el).attr("must")&&!val){
+											bcon=false
+											return false
+										}
+									})
+									if (bcon){								
+										$.post("/admin/check/extrule",obj,function(data){
+											showMsg(JSON.stringify(data.rep))
+										},'json')
+									}else{
+										alert("红色标签的表单不能为空!")
+									}
+								}
+							}]
+					bts = com.pushArry(bts,check)
 				}else if(n=="editlua"){
 					_tit="编辑-"+obj.s_name
 					islua=true
@@ -154,38 +209,7 @@ $(function () {
 					title:_tit,
 					tag:tag,
 					lua:islua,
-					bts:[
-						{label:"保存",class:"btn-primary",
-							fun:function(){
-								var obj={}
-								var bcon=true
-								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
-									var val=$(el).val();
-									if(el.id=="s_luascript"){
-										val=editor_1.getValue()
-										obj[el.id]=val
-									}else{
-										obj[el.id]=$(el).val()
-									}
-									if(el.id!="_id"&&$(el).attr("must")&&!val){
-										bcon=false
-										return false
-									}
-								})
-								if (bcon){								
-									$.post("/admin/logicore/save",obj,function(data){
-										if(data&&data.rep){
-											window.location.href="/admin/logicore?vid={{.vid}}&pid={{.pid}}&sid={{.sid}}"					
-										}else{
-											showTip(data.msg,1000)
-										}
-									},'json')
-								}else{
-									alert("红色标签的表单不能为空!")
-								}
-							}
-						}
-					]
+					bts:bts
 				}
 			OpenDialog(htmlObj,obj)
 			break;

+ 56 - 32
src/web/templates/admin/rule_logicprelist.html

@@ -99,6 +99,37 @@ $(function () {
 		$(".opr").click(function(){
 			var n=$(this).attr("opr")
 			var htmlObj={},obj,tag=[]
+			var bts=[{label:"保存",class:"btn-primary",
+							fun:function(){
+								var obj={}
+								var bcon=true
+								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+									var val=$(el).val();
+									if(el.id=="s_luascript"){
+										val=editor_1.getValue()
+										obj[el.id]=val
+									}else{
+										obj[el.id]=$(el).val()
+									}
+									if(el.id!="_id"&&$(el).attr("must")&&!val){
+										bcon=false
+										return false
+									}
+								})
+								if (bcon){								
+									$.post("/admin/logicpre/save",obj,function(data){
+										if(data&&data.rep){
+											window.location.href="/admin/logicpre?vid={{.vid}}&pid={{.pid}}&sid={{.sid}}"								
+										}else{
+											showTip(data.msg,1000)
+										}
+									},'json')
+								}else{
+									alert("红色标签的表单不能为空!")
+								}
+							}
+						}
+					]
 			var _tit="" 
 			switch(n){
 			case "edit":			
@@ -110,6 +141,7 @@ $(function () {
 				comtag=[{label:"名称",s_label:"s_name",placeholder:"",must:true},{label:"描述",s_label:"s_descript",type:"tpl_text"}]
 				regtag=[{label:"字段",s_label:"s_field"},{label:"正则",s_label:"s_rule",type:"tpl_text",must:true}]
 				luatag=[{label:"脚本",s_label:"s_luascript",type:"tpl_text",must:true}]
+				testcon=[{label:"测试内容",s_label:"s_testcon",type:"tpl_text",must:true}]
 				hiddentag=[{s_label:"_id",type:"tpl_hidden"},{s_label:"vid",type:"tpl_hidden"},{s_label:"pid",type:"tpl_hidden"},{s_label:"sid",type:"tpl_hidden"},{s_label:"s_type",type:"tpl_hidden"}]
 				islua=false
 				tag = com.pushArry(tag,comtag)
@@ -117,6 +149,29 @@ $(function () {
 					_tit="编辑-"+obj.s_name
 					tag = com.pushArry(tag,regtag)
 					tag = com.pushArry(tag,hiddentag)
+					tag = com.pushArry(tag,testcon)
+					check=[{label:"测试",class:"btn-warning",
+								fun:function(){
+									var obj={}
+									var bcon=true
+									$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+										var val=$(el).val(); 
+										obj[el.id]=$(el).val()
+										if(el.id!="_id"&&$(el).attr("must")&&!val){
+											bcon=false
+											return false
+										}
+									})
+									if (bcon){								
+										$.post("/admin/check/prerule",obj,function(data){
+											showMsg(data.rep)
+										},'json')
+									}else{
+										alert("红色标签的表单不能为空!")
+									}
+								}
+							}]
+					bts = com.pushArry(bts,check)
 				}else if(n=="editlua"){
 					_tit="编辑-"+obj.s_name
 					islua=true
@@ -140,38 +195,7 @@ $(function () {
 					title:_tit,
 					tag:tag,
 					lua:islua,
-					bts:[
-						{label:"保存",class:"btn-primary",
-							fun:function(){
-								var obj={}
-								var bcon=true
-								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
-									var val=$(el).val();
-									if(el.id=="s_luascript"){
-										val=editor_1.getValue()
-										obj[el.id]=val
-									}else{
-										obj[el.id]=$(el).val()
-									}
-									if(el.id!="_id"&&$(el).attr("must")&&!val){
-										bcon=false
-										return false
-									}
-								})
-								if (bcon){								
-									$.post("/admin/logicpre/save",obj,function(data){
-										if(data&&data.rep){
-											window.location.href="/admin/logicpre?vid={{.vid}}&pid={{.pid}}&sid={{.sid}}"								
-										}else{
-											showTip(data.msg,1000)
-										}
-									},'json')
-								}else{
-									alert("红色标签的表单不能为空!")
-								}
-							}
-						}
-					]
+					bts:bts
 				}
 			OpenDialog(htmlObj,obj)
 			break;

+ 59 - 38
src/web/templates/admin/rule_prelist.html

@@ -97,7 +97,38 @@ $(function () {
 	ttable.on('init.dt', function () {
 		$(".opr").click(function(){
 			var n=$(this).attr("opr")
-			var htmlObj={},obj,tag=[]
+			var htmlObj={},obj,tag=[],check
+			var bts=[{label:"保存",class:"btn-primary",
+						fun:function(){
+							var obj={}
+							var bcon=true
+							$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+								var val=$(el).val();
+								if(el.id=="s_luascript"){
+									val=editor_1.getValue()
+									obj[el.id]=val
+								}else{
+									obj[el.id]=$(el).val()
+								}
+								if(el.id!="_id"&&$(el).attr("must")&&!val){
+									bcon=false
+									return false
+								}
+							})
+							if (bcon){								
+								$.post("/admin/rulepre/save",obj,function(data){
+									if(data&&data.rep){
+										window.location.href="/admin/rulepre?version={{.version}}"								
+									}else{
+										showTip(data.msg,1000)
+									}
+								},'json')
+							}else{
+								alert("红色标签的表单不能为空!")
+							}
+						}
+					}
+				]
 			var _tit="" 
 			switch(n){
 			case "edit":			
@@ -109,68 +140,58 @@ $(function () {
 				comtag=[{label:"名称",s_label:"s_name",placeholder:"",must:true},{label:"描述",s_label:"s_descript",type:"tpl_text"}]
 				regtag=[{label:"字段",s_label:"s_field"},{label:"正则",s_label:"s_rule",type:"tpl_text",must:true}]
 				luatag=[{label:"脚本",s_label:"s_luascript",type:"tpl_text",must:true}]
+				testcon=[{label:"测试内容",s_label:"s_testcon",type:"tpl_text",must:true}]
 				hiddentag=[{s_label:"_id",type:"tpl_hidden"},{s_label:"s_version",type:"tpl_hidden"},{s_label:"s_type",type:"tpl_hidden"}]
 				islua=false
 				tag = com.pushArry(tag,comtag)
 				if(n=="edit"){
 					_tit="编辑-"+obj.s_name
 					tag = com.pushArry(tag,regtag)
-					tag = com.pushArry(tag,hiddentag)
+					tag = com.pushArry(tag,testcon)
+					check=[{label:"测试",class:"btn-warning",
+								fun:function(){
+									var obj={}
+									var bcon=true
+									$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+										var val=$(el).val(); 
+										obj[el.id]=$(el).val()
+										if(el.id!="_id"&&$(el).attr("must")&&!val){
+											bcon=false
+											return false
+										}
+									})
+									if (bcon){								
+										$.post("/admin/check/prerule",obj,function(data){
+											showMsg(data.rep)
+										},'json')
+									}else{
+										alert("红色标签的表单不能为空!")
+									}
+								}
+							}]
+					bts = com.pushArry(bts,check)
 				}else if(n=="editlua"){
 					_tit="编辑-"+obj.s_name
 					islua=true
 					tag = com.pushArry(tag,luatag)
-					tag = com.pushArry(tag,hiddentag)
 				}else{
 					_tit="新增规则"
 					if(n=="newlua"){
 						_tit="新增脚本"
 						obj={"s_luascript":"--code脚本代码,doc数据源,过滤后返回doc对象\nfunction main(code,doc)\n\t--过滤操作\n\treturn doc\nend","s_version":"{{.version}}","s_type":"1"}
 						tag = com.pushArry(tag,luatag)
-						tag = com.pushArry(tag,hiddentag)
 						islua=true
 					}else{
 						obj={"s_version":"{{.version}}","s_type":"0"}
 						tag = com.pushArry(tag,regtag)
-						tag = com.pushArry(tag,hiddentag)
 					}
-				}
+				} 
+				tag = com.pushArry(tag,hiddentag)
 				htmlObj={
 					title:_tit,
 					tag:tag,
 					lua:islua,
-					bts:[
-						{label:"保存",class:"btn-primary",
-							fun:function(){
-								var obj={}
-								var bcon=true
-								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
-									var val=$(el).val();
-									if(el.id=="s_luascript"){
-										val=editor_1.getValue()
-										obj[el.id]=val
-									}else{
-										obj[el.id]=$(el).val()
-									}
-									if(el.id!="_id"&&$(el).attr("must")&&!val){
-										bcon=false
-										return false
-									}
-								})
-								if (bcon){								
-									$.post("/admin/rulepre/save",obj,function(data){
-										if(data&&data.rep){
-											window.location.href="/admin/rulepre?version={{.version}}"								
-										}else{
-											showTip(data.msg,1000)
-										}
-									},'json')
-								}else{
-									alert("红色标签的表单不能为空!")
-								}
-							}
-						}
-					]
+					bts:bts
 				}
 			OpenDialog(htmlObj,obj)
 			break;