js 识别汉字和全角字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 的好像规则不统一,不过好像也没有汉字和全角字符,但是这样用精不精确,不大明白,有空再去补补计算机基础,,,

以上是关于js 识别汉字和全角字符的主要内容,如果未能解决你的问题,请参考以下文章

全角和半角的区别

C#全角和半角转换

认识全角字符

什么是全角空格?什么是半角空格?

关于全角和半角的问题

JS 正则 允许半角英数字、- (减号)、_ (下划线) 允许全角文字 英数字、记号(空格除外)