论坛首页 招聘求职论坛

一道Javascript面试题。。。

浏览 15334 次
精华帖 (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写出你的解决方案?
   发表时间:2009-09-23  
还要考虑输入特殊符号,如:↑ ↓ → ← ↖ ↗ ↙ ↘ ◆ ◇ ▲ △ ■ □ ● ○ 〇▼ ▽ ★ ☆ § ⊕ ♀
0 请登录后投票
   发表时间:2009-09-24  
必须用正则吧。不过具体怎么写,还得参考着资料才行。
0 请登录后投票
   发表时间:2009-09-24   最后修改:2009-09-24
用正则删除所有\w的字符,算出中文字符的长度
然后删除所有\uFF00-\uFFFF的字符,算出英文和数字字符的长度
两个长度的和就是总长度,总长度小于等于12
1 请登录后投票
   发表时间: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;
}
0 请登录后投票
   发表时间:2009-09-26  
不知道面试 是笔试 还是机试,如果是笔试,那 这题目也就太无聊了,有谁愿意去记那些正则表达式!
不过题目很简单
0 请登录后投票
   发表时间: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;
}



这个是有问题的,没有考虑到字符的半角和全角,如果是个半角的符合,算时,长度也只算一
0 请登录后投票
   发表时间: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;
}



这个是有问题的,没有考虑到字符的半角和全角,如果是个半角的符合,算时,长度也只算一

给个解决的办法啥。。。。
0 请登录后投票
   发表时间:2009-09-26  
这题目不难,只要会正则表达式,请看以下代码,可以实现楼主需要的功能:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
输入待测字串: &nbsp;<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>

0 请登录后投票
   发表时间:2009-09-27  
这个东西全角 半角也要考虑
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics