javascript 正则表达式表示中文问题

caofeng891102 2010-08-04 05:29:39
下面的代码是以字节为单位获得字符串的长度。
<html
<head>
</head>
<body>
<script>
String.prototype.lenB=function()
{
return this.replace(/[^\x0-\xf]/g,"##").length;
}
var sName="a聪慧b";
alert(sName.lenB());
</script>
</body>
</html>


上面的代码是我直接从书上搞下来的,我总觉得这代码有点问题。
\x0-\xf 这十六进制编码代表什么东西啊。。一直没查到。请教大家 ,谢谢。
...全文
234 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
苏鹏凯 2012-04-16
  • 打赏
  • 举报
回复
经试验,/[\x0-\xf]/g在IE上能匹配\x30-\x78。
原因不明。
hjjk123 2010-08-05
  • 打赏
  • 举报
回复
lz
其实 你这个 js语法是错的 只是在执行的时候 他会 默认为 [^\x00-\xf0]
这样就明白为什么是匹配双字节了吧???
hjjk123 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lxcnn 的回复:]
双字节字符

这个代码其实是一种变通的实现方式,就是把一个双字符字符替换成两个单字符字符,然后再通过计算替换后字符的个数,来达到统计原始字符串字节数的目的

这里是把一个双字节字符替换成两个“#”,当然也可以是其它任意单字节字符,如“a“之类的
[/Quote]

但问题是
他为什么是 匹配双字节
不符合 正则 语法啊
-过客- 2010-08-04
  • 打赏
  • 举报
回复
双字节字符

这个代码其实是一种变通的实现方式,就是把一个双字符字符替换成两个单字符字符,然后再通过计算替换后字符的个数,来达到统计原始字符串字节数的目的

这里是把一个双字节字符替换成两个“#”,当然也可以是其它任意单字节字符,如“a“之类的
hjjk123 2010-08-04
  • 打赏
  • 举报
回复
查了查 这是匹配 双字节的

具体原因 还没想清楚
hjjk123 2010-08-04
  • 打赏
  • 举报
回复
\x
表示十六进制啊.....
在js中

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧