just give some hints:<script type="text/javascript">
function R(){
var char = arguments[0];
if(/[\u4e00-\u9fa5]/.test(char)) return "+2";
else return "+1";
}

var Reg1 = /[^1-9,a-z,\-,_,\u4e00-\u9fa5]/ig;
var Reg2 = /[1-9,a-z,\-,_,\u4e00-\u9fa5]/ig;
var TestArray =  [" 测试","测试","The Name","The-NameThe-NameThe-","The-NameThe-NameThe-N"];for(var i=0;i<TestArray.length;i++)
if(Reg1.test(TestArray[i])) alert("["+TestArray[i]+"] 含非法字符!");
else if(eval("0"+TestArray[i].replace(Reg2,R))>20) alert("["+TestArray[i]+"] 字符数超过20!");
else alert("["+TestArray[i]+"] 测试通过!");
Reg1.lastIndex = 0;
Reg2.lastIndex = 0;
</script>