前几天,在做表单验证的时候,发现用户在输入表单内容的时候,正常情况下都是半角输入,但是也有可能是全角输入,所以就牵扯到全角输入内容的验证,这里便提供全角和半角之间的转换函数,与大家分享一下:
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 }
这便是这次项目的收获,希望可以帮助到有类似需求的朋友。