锁定老帖子 主题:一道Javascript面试题。。。
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-23
<input name="username" value="" length="12" maxlengthd="12"/> 数据库里面username vachar2(12) 这个输入框要求用JAVASCRIPT去验证不能超过12个数字或英文或数字英文组合,还要求不能超过6个汉字,还要验证汉字和字母,数字的组合 如:用户名1999(就可以),麦克斯韦1999(就不行) 因为数据库里面要求的长度是12,一个汉字就占两个,但是在页面可以输入12个汉字 请用JAVASCRIPT写出你的解决方案? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-23
还要考虑输入特殊符号,如:↑ ↓ → ← ↖ ↗ ↙ ↘ ◆ ◇ ▲ △ ■ □ ● ○ 〇▼ ▽ ★ ☆ § ⊕ ♀
|
|
返回顶楼 | |
发表时间:2009-09-24
必须用正则吧。不过具体怎么写,还得参考着资料才行。
|
|
返回顶楼 | |
发表时间:2009-09-24
最后修改:2009-09-24
用正则删除所有\w的字符,算出中文字符的长度
然后删除所有\uFF00-\uFFFF的字符,算出英文和数字字符的长度 两个长度的和就是总长度,总长度小于等于12 |
|
返回顶楼 | |
发表时间:2009-09-24
最后修改:2009-09-24
题目不清楚...只能输入数字 英文 汉字?还是任何都可以输入只需要验证长度就可以...
function getLength(s){ var i,sum; sum=0; for(i=0;i<s.length;i++) { if ((s.charCodeAt(i)>=0) && (s.charCodeAt(i)<=255)) sum=sum+1; else sum=sum+2; } return sum; } |
|
返回顶楼 | |
发表时间:2009-09-26
不知道面试 是笔试 还是机试,如果是笔试,那 这题目也就太无聊了,有谁愿意去记那些正则表达式!
不过题目很简单 |
|
返回顶楼 | |
发表时间:2009-09-26
最后修改:2009-09-26
gccgg 写道 题目不清楚...只能输入数字 英文 汉字?还是任何都可以输入只需要验证长度就可以...
function getLength(s){ var i,sum; sum=0; for(i=0;i<s.length;i++) { if ((s.charCodeAt(i)>=0) && (s.charCodeAt(i)<=255)) sum=sum+1; else sum=sum+2; } return sum; } 这个是有问题的,没有考虑到字符的半角和全角,如果是个半角的符合,算时,长度也只算一 |
|
返回顶楼 | |
发表时间:2009-09-26
yue_hun1025 写道 gccgg 写道 题目不清楚...只能输入数字 英文 汉字?还是任何都可以输入只需要验证长度就可以...
function getLength(s){ var i,sum; sum=0; for(i=0;i<s.length;i++) { if ((s.charCodeAt(i)>=0) && (s.charCodeAt(i)<=255)) sum=sum+1; else sum=sum+2; } return sum; } 这个是有问题的,没有考虑到字符的半角和全角,如果是个半角的符合,算时,长度也只算一 给个解决的办法啥。。。。 |
|
返回顶楼 | |
发表时间:2009-09-26
这题目不难,只要会正则表达式,请看以下代码,可以实现楼主需要的功能:
<html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 输入待测字串: <input type="text" onblur="test(this.value);"> </html> <script language="javascript"> <!-- //测试匹配情况 function test(inputVal) { //去除首尾空格 inputVal = inputVal.replace(/^\s*|\s*$/g,""); //零长字串不作处理 if ( inputVal.length == 0 ) { return; } //只能匹配数字,字母或汉字 var _match = inputVal.match(/^[a-zA-Z0-9\u4e00-\u9fa5]+$/g); //匹配数字或字母(包括大小写) var codeMatch = inputVal.match(/[a-zA-Z0-9]/g); //匹配汉字 var charMatch = inputVal.match(/[\u4e00-\u9fa5]/g); //数字或字母个数 var codeNum = codeMatch ? codeMatch.length : 0; //汉字个数 var charNum = charMatch ? charMatch.length : 0; //成功 if ( _match && codeNum + 2*charNum <= 12 ) { alert("输入正确!"); return; } //失败 alert("输入错误!"); } //--> </script> |
|
返回顶楼 | |
发表时间:2009-09-27
这个东西全角 半角也要考虑
|
|
返回顶楼 | |