我们在做项目的时候总会遇到数据导入的问题,那么当我们想将数据导入数据库的时候判断一些字段的值的格式是否符合常规,那么该怎么做呢?
例图:我想将这条客户信息导入到数据库,但是单位电话的格式不小心填错了,为了防止数据的不规范性,所以要求在导入数据库之前就判断单位电话的格式是否正确,那么该怎么写呢?
效果图:
其实写法很简单,就是在将数据导入到数据库的时候就写正则来判断一下数据(在控制器中实现这种效果),步骤如下:
1、首先是要获取到上传表格里面的数据;
2、通过foreach遍历循环表格里面的数据;
3、获取表格里面的单位电话进行正则的判断;
4、如果不符合正则表达式则直接跳出给提示,符合就进行保存数据的下一步。
代码:
//记录条数
int intnum = 0;
//声明一张新的表格来存放表格的数据
List<clientVo> listClient = new List<clientVo>();
//判断保存到session里面的表格数据是否为空,不为空的话就用新表来获取表格的数据
if (Session["ImportExcel"] != null){
listClient = Session["ImportExcel"] as List<clientVo>;
}
//遍历虚循环数据进行判断
foreach (var item in listClient)
{
intnum++;
//单位电话的正则
string Phone = @"(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}";
//判断单位电话是否符号正则表达式,并且单位电话不为空时判断
if (Regex.IsMatch(item.ClientMonadPhone, Phone) == false && item.ClientMonadPhone != "")
{
//提示第几条数据的单位电话的格式不规范
returnJson.Text = "导入的第" + intnum + "条数据的单位电话格式不正确,请更改后重新导入";
return Json(returnJson, JsonRequestBehavior.AllowGet);
}
}
总结:
在Jquery中的判断正则的写法和在控制器的正则的写法不一样,但是效果是一样的。
在jQuery的写法:
//获取值
var clientMonadPhone = $("#formUpdateClient [name='ClientMonadPhone']").val();
//验证单位电话
var ClientMonadPhone = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/;
if (!ClientMonadPhone.test(clientMonadPhone)) {
layer.alert("单位电话格式有误,请输入正确的联系电话!", { icon: 0, title: "提示", skin: "layui-layer-molv" });
return;
}
在控制器的写法:
string Phone = @"(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}";
if (Regex.IsMatch(item.ClientMonadPhone, Phone) == false && item.ClientMonadPhone != ""){
returnJson.Text = "导入的第" + intnum + "条数据的单位电话格式不正确,请更改后重新导入";
return Json(returnJson, JsonRequestBehavior.AllowGet);
}
这样就可以把它们区分开来。