如何验证用户添入ID的有效性?就是说只能用字母、数字和下划线而不能包含别的字符

aben527cn 2002-02-09 01:11:43
我是这么写的:
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;
}

可是在执行的时候没有效果,根本就不判断!!大家有什么好办法?
...全文
173 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
karma 2002-02-09
  • 打赏
  • 举报
回复
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+$/;

aben527cn 2002-02-09
  • 打赏
  • 举报
回复
请问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/;和我的这个有什么区别吗?
Studio 2002-02-09
  • 打赏
  • 举报
回复
用正则表达式啊!
楼上的兄弟 re要定义类型的吧
aben527cn 2002-02-09
  • 打赏
  • 举报
回复
无为兄的方法果真奇妙
我使用了var a = /^\w+$/;
已经成功
可是我不明白的"\w"是什么意思,看上去是转义字符,不知道转成什么了
不要笑话我啊,我刚刚学JAVASCRIPT的
karma 2002-02-09
  • 打赏
  • 举报
回复
function rightID(ID)
{
var re = /^\w+$/;
return re.test(ID);
}

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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