針對前臺腳本驗證的幾種方式測試
一、ui
$("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; } });
二、針對獲取內容字符串的長度,也能夠分開來寫,漢子和字符spa
//獲取字符串長度(漢字算兩個字符,字母數字算一個) 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; }
三、鍵盤字符驗證code
// 只要鍵盤一擡起就驗證編輯框中的文字長度,最大字符長度能夠根據須要設定 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; } }
針對後臺腳本驗證的幾種方式orm
一、只驗證漢字的方法blog
/// <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; }
二、包括中文、字母和數字ip
/// <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; }
三、檢查同一個字符串中,不相同字符的個數字符串
/// <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; }
四、檢測字符串中含有中文字符串的的實際長度get
/// <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; }