服务端验证代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Common.Extensions { using System.Text.RegularExpressions; /// <summary> /// 系统数据验证类 /// </summary> public abstract class DataValidator { /// <summary> /// 检测字符串是否为数字 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为数字,则为 true;否则为 false。</returns> public static bool IsNumber(string input) { if (string.IsNullOrEmpty(input)) { return false; } else { return Regex.IsMatch(input, "^[0-9]+$"); } } /// <summary> /// 检测字符串是否为数字和,分隔符 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为数字,则为 true;否则为 false。</returns> public static bool IsNumbers(string input) { if (string.IsNullOrEmpty(input)) { return false; } else { return Regex.IsMatch(input, "^[0-9,]+$"); } } /// <summary> /// 判断字符串是否是有效的IP地址 /// </summary> /// <param name="input">IP地址字符串</param> /// <returns>有效IP地址返回true ;否则返回false</returns> public static bool IsIP(string input) { if (!string.IsNullOrEmpty(input)) { return Regex.IsMatch(input.Trim(), @"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"); } else { return false; } } /// <summary> /// 检测字符串是否为数字,可带正负号 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为数字,则为 true;否则为 false。</returns> public static bool IsNumberSign(string input) { if (string.IsNullOrEmpty(input)) { return false; } else { return Regex.IsMatch(input, "^[+-]?[0-9]+$"); } } /// <summary> /// 检测字符串是否为浮点数 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为浮点数,则为 true;否则为 false。</returns> public static bool IsDecimal(string input) { if (string.IsNullOrEmpty(input)) { return false; } else { return Regex.IsMatch(input, @"^[0-9]+(.[0-9]+)?$"); } } /// <summary> /// 检测字符串是否为浮点数 可带正负号 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为浮点数,则为 true;否则为 false。</returns> public static bool IsDecimalSign(string input) { if (string.IsNullOrEmpty(input)) { return false; } else { return Regex.IsMatch(input, @"^[+-]?[0-9]+(.[0-9]+)?$"); } } /// <summary> /// 检测字符串是否为有效的URL地址 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为有效的URL地址,则为 true;否则为 false。</returns> public static bool IsUrl(string input) { if (string.IsNullOrEmpty(input)) { return false; } else { return Regex.IsMatch(input, @"^http(s)?://([w-]+.)+[w-]+(/[w- ./?%&=]*)?$", RegexOptions.IgnoreCase); } } /// <summary> /// 检测字符串是否为有效的邮件地址 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为有效的邮件地址,则为 true;否则为 false。</returns> public static bool IsEmail(string input) { if (string.IsNullOrEmpty(input)) { return false; } else { return Regex.IsMatch(input, @"^w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*$"); } } /// <summary> /// 检测字符串是否为有效的邮政编码 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为有效的邮政编码,则为 true;否则为 false。</returns> public static bool IsPostCode(string input) { if (!IsNumber(input) || input.Length != 6) { return false; } else { return true; } } /// <summary> /// 检测字符串是否为有效的区号 /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为有效的区号,则为 true;否则为 false。</returns> public static bool IsAreaCode(string input) { if (!IsNumber(input) || input.Length < 3 || input.Length > 5) { return false; } else { return true; } } /// <summary> /// 检测字符串是否为有效的ID /// </summary> /// <param name="input">需要检查的字符串</param> /// <returns>如果字符串为有效的ID,则为 true;否则为 false。</returns> public static bool IsValidId(string input) { bool valid; if (string.IsNullOrEmpty(input)) { valid = false; } else { input = input.Replace("|", string.Empty).Replace(",", string.Empty).Replace("-", string.Empty).Replace(" ", string.Empty).Trim(); if (string.IsNullOrEmpty(input)) { valid = false; } else { if (IsNumber(input)) { valid = true; } else { valid = false; } } } return valid; } /// <summary> /// 验证是否符合用户名规则 /// </summary> /// <param name="userName">用户名</param> /// <returns>符合返回true,不符合返回false</returns> public static bool IsValidUserName(string userName) { if (string.IsNullOrEmpty(userName)) { return false; } if (userName.Length > 20) { return false; } if (userName.Trim().Length == 0) { return false; } if (userName.Trim(new char[] { '.' }).Length == 0) { return false; } string notContains = @"/""[]:|<>+=;,?*@"; for (int i = 0; i < userName.Length; i++) { if (notContains.IndexOf(userName[i]) >= 0) { return false; } } return true; } /// <summary> /// 过滤掉字符串中会引起注入攻击的字符 /// </summary> /// <param name="strchar">要过滤的字符串</param> /// <returns>已过滤的字符串</returns> public static string FilterBadChar(string strchar) { string tempstrChar; string newstrChar = string.Empty; if (string.IsNullOrEmpty(strchar)) { newstrChar = string.Empty; } else { tempstrChar = strchar; string[] strBadChar = { "+", "'", "%", "^", "&", "?", "(", ")", "<", ">", "[", "]", "{", "}", "/", """, ";", ":", "Chr(34)", "Chr(0)", "--" }; StringBuilder strBuilder = new StringBuilder(tempstrChar); for (int i = 0; i < strBadChar.Length; i++) { newstrChar = strBuilder.Replace(strBadChar[i], string.Empty).ToString(); } newstrChar = Regex.Replace(newstrChar, "@+", "@"); } return newstrChar; } /// <summary> /// 过滤sql语句中like的内容 /// </summary> /// <param name="strchar">like的内容</param> /// <returns>返回过滤后sql语句中like的内容</returns> public static string FilterLikeSql(string strchar) { string tempstrChar; string newstrChar = string.Empty; if (string.IsNullOrEmpty(strchar)) { newstrChar = string.Empty; } else { tempstrChar = strchar; string[] strBadChar = { "'", "%" }; StringBuilder strBuilder = new StringBuilder(tempstrChar); for (int i = 0; i < strBadChar.Length; i++) { newstrChar = strBuilder.Replace(strBadChar[i], "\" + strBadChar[i]).ToString(); } } return newstrChar; } /// <summary> /// 过滤字符串中换行空格 /// </summary> /// <param name="strchar">字符串</param> /// <returns>返回过滤后过滤字符内容</returns> public static string FilterStringLineBr(string strchar) { string newstrChar = string.Empty; if (string.IsNullOrEmpty(strchar)) { newstrChar = string.Empty; } else { newstrChar = strchar.Replace(" ", "").Replace(" ", "").Replace(" ", ""); } return newstrChar; } } }