// \x00-\xff 是字符编码的范围,如果查过这个范围,就不是字母和数字了,
//把全部符合\x00-\xff条件的字符用**替换,然后计算长度,即遇到一个中文就用**替换,计算为两位
var length = name.replace(/[^\x00-\xff]/g,"**").length;
用js判断字符串的长度:
如:str=”中国”,alert(str.length),则提示长度为2。
做如下处理后:
str=str.replace(/[^\x00-\xff]/g, 'xx'),alert(str.length)则长度提示为4
function strlen(str){
var len = 0;
for (var i=0; i<str.length; i++) {
var c = str.charCodeAt(i);
//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
len++;
} else {
len+=2;
return len;
sample:
<!DOCTYPE html>
<meta charset="UTF-8">
<title>JS-TRING</title>
<script type="text/javascript" >
//方案1
function wayOne(){
var str = document.getElementById('tt').value;
str=str.replace(/[^\x00-\xff]/g, 'xx');
alert(str.length);
//方案2-01
function wayTwo(){
var str = document.getElementById('tt').value;
alert(WidthCheck(str, 6));
//方案2-02
function WidthCheck(s, n){
var w = 0;
for (var i=0; i<s.length; i++) {
var c = s.charCodeAt(i);
//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
w++;
} else {
w+=2;
if (w == n) {
return true;
return false;
</script>
</head>
<div style="margin:10px 0;">
<input type="text" id="tt" />
<input type="button" value="wayOne" onclick="wayOne();" />
<input type="button" value="wayTwo" onclick="wayTwo();" />
</form>
</body>
</html>