js 识别汉字和全角字符

遇到个问题,需要检测输入框中的字符长度,如果是汉字,算作2个字节。。。

然后我就在想,我怎么去识别他是不是汉字呢???首先想到的可能就是 js 的 charCodeAt 方法, ASCII 码,然后就疑惑,那么怎么把汉字和 ASCII 码对应起来呢,想不通,遂百度,发现转发方法的人挺多,但都不说原理,难道都明白???原理还是我来说吧

比较通用的方法都是这样子:

代码
        var a="好";
    	isChinese=!!a.match(/[^x00-xff]/ig);
    	//或者
    	isChinese=!(a.charCodeAt()>=0&&a.charCodeAt()<=128);
    	//或者直接求长度
    	var length=a.replace(/[^x00-xff]/g,"**").length;
			

你会发现三种方法里有两种都提到了 x00-xff ,好好看看就是转译符,加上16进制数字,转成10进制就是,0-255,那么这里意思就很明显了,就是找出 ASCII 码超出 0-255 的字符,如果有,就认为是汉字或全角字符,算作两个字节,明白了?

ASCII 码我倒是去看了下,0-127是统一的,128-255 的好像规则不统一,不过好像也没有汉字和全角字符,但是这样用精不精确,不大明白,有空再去补补计算机基础,,,

行文仓促,如有错误,欢迎批评指正~~~
转载请注明来源,文中所提文档可以在我的 Github 上下载~~~新博客现已迁移至 Github issues

原文地址:https://www.cnblogs.com/xianshenglu/p/7816098.html