作者:卡布奇诺 栏目:编程代码 日期:2013-05-23 21:58 浏览:次
[摘要]在编写 javascript 验证的时候,有时候我们需要将中文字符当成2个字符来判断,而 javascript 默认会将中文当成一个字符! 比如,我们需要取得我今年18岁这个字符串的长度,直接用 javascript : script varstr= 我今年18岁 ; document.write(str.length); //
在编写javascript验证的时候,有时候我们需要将中文字符当成2个字符来判断,而javascript默认会将中文当成一个字符!
比如,我们需要取得"我今年18岁"这个字符串的长度,直接用javascript:
<script>
var str = '我今年18岁';
document.write(str.length); //打印结果是 6
</script>
而我们需要获得的长度,实际是需要把中文按照两个字符处理的话,理论上结果应该是 10才对,这个时候,我们需要使用javascript里面的正则表达式来进行匹配,代码如下:
<script>
function cLength(str){
//匹配非中文的正则表达式
var reg = /[^\u4E00-\u9FA5\uf900-\ufa2d]/g;
var temp = str.replace(reg,'');
return parseInt(temp.length)+parseInt(str.length);
}
var str="我今年18岁";
document.write(cLength(str)); //打印结果 10
</script>
原理:
总长度 = 中文字符*2 + 普通字符*1
首先将非中文字符去掉获得长度即中文的长度(按1个字符长度),然后再加上字符串的长度(中文也是取1个字符长度),加起来就是我们所需要的结果!上面的逻辑可能稍微有点难理解,但是当你理顺了,其实是非常简单的,呵呵!欢迎大家和我交流JS方面的东西,西部数码代理客服-彭:QQ275400726