前后台验证字符串长度
针对前台脚本验证的几种方式
1、
$("form").submit(function () { var content = editor.getContentTxt(); var sum = 0; re = /[\u4E00-\u9FA5]/g; //测试中文字符的正则 if (content) { if (re.test(content)) //使用正则判断是否存在中文 { if (content.match(re).length <= 10) { //返回中文的个数 $.dialog.tips("正文不能小于10个汉字!"); return false; } else { var $submit = $("input[type='submit']").attr("disabled", true); setTimeout(function () { $submit.attr("disabled", false) }, 5000); return true; } } else { $.dialog.tips("正文不能小于10个汉字!"); return false; } } else { $.dialog.tips("正文不能小于10个汉字!"); return false; } });
2、针对获取内容字符串的长度,也可以分开来写,汉子和字符
//获取字符串长度(汉字算两个字符,字母数字算一个) function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { var a = val.charAt(i); if (a.match(/[^\x00-\xff]/ig) != null) { len += 2; } else { len += 1; } } return len; }
3、键盘字符验证
// 只要键盘一抬起就验证编辑框中的文字长度,最大字符长度可以根据需要设定 function checkLength(obj) { var maxChars = 100;//最多字符数 var curr = maxChars - getByteLen(obj.value); if (curr < 10) { document.getElementById("checklen").innerHTML = curr.toString(); } if (curr > 0) { document.getElementById("checklen").innerHTML = curr.toString(); } else { document.getElementById("checklen").innerHTML = '0'; document.getElementById("subject").readOnly = true; } }
针对后台脚本验证的几种方式
1、只验证汉字的方法
/// <summary> /// 计算字符串长度,只校验汉字 /// </summary> /// <param name="str"></param> /// <returns></returns> public static int ChineseLen(string str) { if (string.IsNullOrEmpty(str)) return 0; Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled); char[] stringChar = str.Trim().ToCharArray(); StringBuilder sb = new StringBuilder(); int nLength = 0; for (int i = 0; i < stringChar.Length; i++) { if (regex.IsMatch((stringChar[i]).ToString()) || (stringChar[i] > 255)) { nLength += 2; } } return nLength; }
2、包括中文、字母和数字
/// <summary> /// 计算字符串长度,中文按照2个字节算,字母和数字按照1个字节算 /// </summary> /// <param name="str"></param> /// <returns></returns> public static int Len(string str) { if (string.IsNullOrEmpty(str)) return 0; Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled); char[] stringChar = str.Trim().ToCharArray(); StringBuilder sb = new StringBuilder(); int nLength = 0; for (int i = 0; i < stringChar.Length; i++) { if (regex.IsMatch((stringChar[i]).ToString()) || (stringChar[i] > 255)) { nLength += 2; } else { nLength = nLength + 1; } } return nLength; }
3、检查同一个字符串中,不相同字符的个数
/// <summary> /// 检查同一个字符串中不相同字符的个数 /// </summary> /// <param name="str"></param> /// <returns></returns> public static int CheckStringChar(string Str) { string newStr = ""; char oldChar = '_'; for (int i = 0; i < Str.Length; i++) { if (oldChar != Str[i]) { oldChar = Str[i]; newStr += Str[i]; } } return newStr.Length; }
4、检测字符串中含有中文字符串的的实际长度
/// <summary> /// 检测含有中文字符串的实际长度 /// </summary> /// <param name="str">要检测的字符串</param> /// <returns>返回结果长度</returns> public static int GetChineseStringLength(string str) { int chineseLength = 0; byte[] b = System.Text.ASCIIEncoding.ASCII.GetBytes(str); for (int i = 0; i < b.Length; i++) { if (b[i] == 63) { chineseLength++; } chineseLength++; } return chineseLength; }