这是前台验证: function isChinese(str){        var badChar ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
        badChar += "abcdefghijklmnopqrstuvwxyz"; 
        badChar += "0123456789"; 
        badChar += " "+" ";//半角与全角空格 
        badChar += "`~!@#$%^&()-_=+]\\|:;\"\\'<,>?/";//不包含*或.的英文符号 
        if(""==str){ 
        return false; 
        } 
        for(var i=0;i<str.length;i++){
         var c = str.charAt(i);//字符串str中的字符 
        if(badChar.indexOf(c) > -1)
            { 
            return false; 
            } 
        } 
        return true;     }
这是后台验证:
 public bool isChinese(string str)
    {        if ("" == str)
        {
            return false;
        }
        for (int i = 0; i < str.Length; i++)
        {
            char c = Convert.ToChar(str.Substring(i, 1));//字符串str中的字符 
            if ((int)c < 129)
            {
                return false;
            }
        }
        return true;
    }均测试过但是录入的数据还是在用户名中出现英文名字,是浏览器的问题?前台后台都使用验证,用户怎么跳过验证的?
请教了

解决方案 »

  1.   

    怎么绕过?不添加这个验证就可以了
    控件不添加ValidationExpression="isChinese()"
    后台代码,不添加,这部分代码就行了.
    if (isChinese("tsetrd嗨")){}
    不知道楼主是这个意思吗?
      

  2.   

    把输入框中中文字段提取出来 
    string  o =System.Text.RegularExpressions.Regex.Replace(输入的字符串, "[^\u4e00-\u9fa5]+", "");
    注意:这里只提取了中文,如果有英文是不会提取的
    然后把o的长度与原字符串的长度对比一下 如果有英文或者别的  那么肯定不等啦  如果相等 ,那么说明只有中文