有时我们需要判断一个字符是不是汉字, 比如在用户输入含有中英文的内容时, 需要判断是否超过规定长度就要用到. 那么如何判断? 下面本篇文章就来给大家介绍一下判断方法, 希望对大家有所帮助.
方法一, 用正则表达式判断:
正则表达式 (regular expression) 是一个描述字符模式的对象. ECMAScript 的 RegExp 类表示正则表达式, 而 String 和 RegExp 都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数.
示例:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
- DTD/xhtml1-transitional.dtd">
- <HTML xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>
- JS 判断字符是否是汉字
- </title>
- <style type="text/CSS">
- .content{ width:350px; overflow:hidden; border:1px solid #ddd; }
- </style>
- <script language="javascript" type="text/javascript">
- function CheckChinese(obj, val) {
- var reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
- if (reg.test(val)) {
- alert("不能输入汉字!");
- var strObj = document.getElementById(obj);
- strObj.value = "";
- strObj.focus();
- }
- }
- </script>
- </head>
- <body>
- <div class="content">
- <div>
- 测试字符:
- <input id="test" type="text" onblur="CheckChinese('test',this.value)"
- />
- </div>
- </div>
- </body>
- </HTML>
方法二, 用 Unicode 字符范围判断
Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案. 目前的 Unicode 字符分为 17 组编排, 0x0000 至 0x10FFFF, 每组称为平面(Plane), 而每平面拥有 65536 个码位, 共 1114112 个. 然而目前只用了少数平面.
示例:
以下方法是用于统计输入字符串的长度, 如果是汉字, 则字符串长度加 2 ; 否则字符串长度加 1.
- function chkstrlen(str)
- {
- var strlen = 0;
- for(var i = 0;i <str.length; i++)
- {
- if(str.charCodeAt(i)> 255) // 如果是汉字, 则字符串长度加 2
- strlen += 2;
- else
- strlen++;
- }
- return strlen;
- }
来源: http://www.css88.com/qa/javascript/11258.html