前几天,在做表单验证的时候,发现用户在输入表单内容的时候,正常情况下都是半角输入,但是也有可能是全角输入,所以就牵扯到全角输入内容的验证,这里便提供全角和半角之间的转换函数,与大家分享一下:
1、js判断文字是全角还是半角:
1 str="中文;;a"
2 alert(str.match(/[\u0000-\u00ff]/g)) //半角
3 alert(str.match(/[\u4e00-\u9fa5]/g)) //中文
4 alert(str.match(/[\uff00-\uffff]/g)) //全角
2、全角与半角之间的相互转换:
首先,先得明确以下信息:
a.全角空格为12288,半角空格为32;
b.其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248;
半角转换为全角函数:
1 function ToDBC(txtstring) {
2 var tmp = "";
3 for(var i=0;i<txtstring.length;i {
4 if(txtstring.charCodeAt(i)==32){
5 tmp= tmp String.fromCharCode(12288);
6 }
7 if(txtstring.charCodeAt(i)<127){
8 tmp=tmp String.fromCharCode(txtstring.charCodeAt(i) 65248);
9 }
10 }
11 return tmp;
12 }
上面用到了js的charCodeAt() 方法与fromCharCode() 方法。
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。
全角转换为半角函数:
1 function ToCDB(str) {
2 var tmp = "";
3 for(var i=0;i<str.length;i ){
4 if (str.charCodeAt(i) == 12288){
5 tmp = String.fromCharCode(str.charCodeAt(i)-12256);
6 continue;
7 }
8 if(str.charCodeAt(i) > 65280 && str.charCodeAt(i) < 65375){
9 tmp = String.fromCharCode(str.charCodeAt(i)-65248);
10 }
11 else{
12 tmp = String.fromCharCode(str.charCodeAt(i));
13 }
14 }
15 return tmp
16 }
这便是这次项目的收获,希望可以帮助到有类似需求的朋友。
更多专业前端知识,请上 【猿2048】www.mk2048.com