如何验证用户添入ID的有效性?就是说只能用字母、数字和下划线而不能包含别的字符
我是这么写的:
function rightID(ID)
{
var a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOQPRSTUVWXYZ0123456789_";
var id=ID;
for(var i=0;i<=id.length;i++)
{
for(var j=0;j<=a.length+1;j++)
if(id.charat(i)==a.charat(j)) break;
if (j==a.length+1) return 0;
}
return 1;
}
可是在执行的时候没有效果,根本就不判断!!大家有什么好办法?
问题点数:20、回复次数:5Top
1 楼karma(无为MS MVP)回复于 2002-02-09 02:00:03 得分 20
function rightID(ID)
{
var re = /^\w+$/;
return re.test(ID);
}Top
2 楼Studio()回复于 2002-02-09 11:20:46 得分 0
用正则表达式啊!
楼上的兄弟 re要定义类型的吧Top
3 楼aben527cn(阿笨)回复于 2002-02-09 11:31:33 得分 0
请问Test()方法何时返回True or False?
我是这么写的:
function rightID(ID)
{
var a = /abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOQPRSTUVWXYZ0123456789_/;
return a.test(ID);
}
然后在<BODY>里这么写:
<SCRIPT LANGUAGE="JavaScript">
<!--
a="%";
document.write(rightID(a));
//-->
</SCRIPT>
可是无论是用a="$#@%"还是a="5568"打印出的都是False
但是用无为兄你的那个函数,如果传过去的是5568就打印True,是$#@%就打印False,这是为什么?
还有我定义字符串一般都是用a="adfadf";,无为兄你用a=/adfasd/;和我的这个有什么区别吗?
Top
4 楼karma(无为MS MVP)回复于 2002-02-09 11:43:39 得分 0
you are asking to match a string which includes "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOQPRSTUVWXYZ0123456789_", a 63-character string. None of your strings matched that, that is why it is false. Try
var a = /[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOQPRSTUVWXYZ0123456789_]+/;
or
var a=/[a-zA-Z0-9_]+/;
or
var a=/\w+/;
but this is wrong, since this will match "%abad^" too. That is why you should use
var a = /^\w+$/;
Top
5 楼aben527cn(阿笨)回复于 2002-02-09 17:08:18 得分 0
无为兄的方法果真奇妙
我使用了var a = /^\w+$/;
已经成功
可是我不明白的"\w"是什么意思,看上去是转义字符,不知道转成什么了
不要笑话我啊,我刚刚学JAVASCRIPT的Top




