有时候输入的数据在前端无法检验,比如导入EXCEL数据
就需要在后台检验数据规则
success = CheckValue(contactTable.Rows[i][0 + j], CheckType.Number, 6, 6, out msg, "姓名");
#region 检验字段值是否符合规则
/// <summary>
/// 检验字段值是否符合规则
/// </summary>
/// <param name="cValue">字段值</param>
/// <param name="checkType">规则</param>
/// <param name="Maxlength">最大长度</param>
/// <param name="FixLength">固定长度,0则无固定长度</param>
/// <param name="msg">返回信息</param>
/// <param name="msgName">信息名</param>
/// <returns>成功失败</returns>
private bool CheckValue(object cValue, CheckType checkType, int Maxlength, int FixLength, out string msg, string msgName)
{
bool success = false;
msg = string.Empty;
if (cValue == null || cValue.ToString().Trim() == string.Empty)
{
msg = "不能为空";
}
else
{
if (cValue.ToString().Trim().Length > Maxlength)
{
msg = "长度不能大于" + Maxlength + "位";
}
else if (FixLength != 0)
{
if (cValue.ToString().Trim().Length != FixLength)
{
msg = "长度必须是" + FixLength + "位";
}
}
if (msg == string.Empty)
{
switch (checkType)
{
#region 数字
//数字
case CheckType.Number:
{
string s = cValue.ToString().Trim();
string c;
for (int i = 0; i < s.Length; i++)
{
c = s.Substring(i, 1);
Regex rx = new Regex("^[0-9]$"); // 数字正则
if (rx.IsMatch(c))
{
success = true;
}
else
{
msg = "只能是数字";
success = false;
break;
}
}
break;
}
#endregion
#region 中文字符
//中文字符
case CheckType.StringCh:
{
string s = cValue.ToString().Trim();
string c;
for (int i = 0; i < s.Length; i++)
{
c = s.Substring(i, 1);
Regex rx = new Regex("^[\u4e00-\u9fa5]$"); // 中文 正则
if (rx.IsMatch(c))
{
success = true;
}
else
{
msg = "只能是中文";
success = false;
break;
}
}
break;
}
#endregion
#region 英文字符
//英文字符
case CheckType.StringEn:
{
string s = cValue.ToString().Trim();
string c;
for (int i = 0; i < s.Length; i++)
{
c = s.Substring(i, 1);
Regex rx = new Regex("^[A-Za-z]$"); // 字母正则
if (rx.IsMatch(c))
{
success = true;
}
else
{
msg = "只能是字母";
success = false;
break;
}
}
break;
}
#endregion
#region 中英字符
//中英字符
case CheckType.StringEnCh:
{
string s = cValue.ToString().Trim();
string c;
for (int i = 0; i < s.Length; i++)
{
c = s.Substring(i, 1);
Regex rx = new Regex("^[\u4e00-\u9fa5A-Za-z]$"); // 中文或字母正则
if (rx.IsMatch(c))
{
success = true;
}
else
{
msg = "只能是中文或字母";
success = false;
break;
}
}
break;
}
#endregion
#region 中英字符、数字
//中英字符、数字
case CheckType.StringEnChNumber:
{
string s = cValue.ToString().Trim();
string c;
for (int i = 0; i < s.Length; i++)
{
c = s.Substring(i, 1);
Regex rx = new Regex("^[\u4e00-\u9fa5A-Za-z0-9]$"); //中文、英文、数字正则
if (rx.IsMatch(c))
{
success = true;
}
else
{
msg = "只能是中文、字母或数字";
success = false;
break;
}
}
break;
}
#endregion
#region 英字符、数字
//英字符、数字
case CheckType.StringEnNumber:
{
string s = cValue.ToString().Trim();
string c;
for (int i = 0; i < s.Length; i++)
{
c = s.Substring(i, 1);
Regex rx = new Regex("^[A-Za-z0-9]$"); // 字母、数字正则
if (rx.IsMatch(c))
{
success = true;
}
else
{
msg = "只能是字母或数字";
success = false;
break;
}
}
break;
}
#endregion
#region 正负小数位的数字
//正负小数位的数字
case CheckType.DecimalNum:
{
string s = cValue.ToString().Trim();
//string c;
//for (int i = 0; i < s.Length; i++)
//{
//c = s.Substring(i, 1);
Regex rx = new Regex(@"^(-?\d+)(\.\d+)?$"); // 浮点数
if (rx.IsMatch(s))
{
success = true;
}
else
{
msg = "只能是数字";
success = false;
break;
}
//}
break;
}
#endregion
default:
break;
}
}
}
msg = msgName + msg;
return success;
}
/// <summary>
/// 检验类型
/// </summary>
private enum CheckType
{
/// <summary>
/// 英文字符
/// </summary>
StringEn = 1,
/// <summary>
/// 数字
/// </summary>
Number = 2,
/// <summary>
/// 中文字符
/// </summary>
StringCh = 3,
/// <summary>
/// 中、英字符
/// </summary>
StringEnCh = 4,
/// <summary>
/// 英字符、数字
/// </summary>
StringEnNumber = 5,
/// <summary>
/// 中、英字符、数字
/// </summary>
StringEnChNumber = 6
,
/// <summary>
/// 正负小数位的数字
/// </summary>
DecimalNum = 7
}
#endregion