前后台验证字符串长度

针对前台脚本验证的几种方式

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;
        }
原文地址:https://www.cnblogs.com/zhangpengnike/p/6053706.html