前后台驗證字符串長度


 

針對前台腳本驗證的幾種方式

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;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM