Javascript 验证html中的用户名

Javascript 验证html中的用户名,javascript,Javascript,我希望用户名后面的文本框只接受字母或数字或它们的组合。如果用户输入字母或数字以外的任何内容,则单击按钮时应显示警报对话框。我的代码是: <html> <body> <form name="f1"> username <input type="text" name="tb1"><br> <input type="button" value="validate" onclick="val()"> </form

我希望用户名后面的文本框只接受字母或数字或它们的组合。如果用户输入字母或数字以外的任何内容,则单击按钮时应显示警报对话框。我的代码是:

 <html>
 <body>

 <form name="f1">
 username <input type="text" name="tb1"><br>
 <input type="button" value="validate" onclick="val()">
 </form>

 <script>
 function val()
 {
if(document.f1.tb1.value=="")
    alert('Enter username!');
 }
 </script>

 </body></html>

用户名
函数val() { if(document.f1.tb1.value==“”) 警报('输入用户名!'); }

谁能告诉我解决办法吗

val
函数中使用正则表达式:

function val()
{
    if(document.f1.tb1.value=="")
        alert('Enter username!');
    if(/[^a-zA-Z0-9]/.test(document.f1.tb1.value))
        alert('Username must only consist of letters and numbers')
}
这一行的作用是查看传递给
test
的字符串是否有a-z、a-z和0-9以外的内容。如果是,则会发出警报。如果您愿意接受下划线作为有效字符,则
If
将变得更简单:

if(/[\W]/.test(document.f1.tb1.value))
\w
是表示所有数字、字符和下划线的快捷方式。
[^…]
语法的意思是“任何与此列表不匹配的字符。
\W
实际上是
[^\W]
的快捷方式,并查找任何不是a-Z、a-Z、0-9和!

根据您的评论进行编辑

如果只想接受字母字符,只需测试a-z,而不是在表达式中添加0-9:

if(/[^a-zA-Z]/.test(document.f1.tb1.value))
这将检查
document.f1.tb1.value的值
以查看它是否包含非字母的内容,即a-z和a-z之外的内容

有很多关于正则表达式的文档。一旦你理解了这个概念,我就用它作为参考。

这个怎么样

编辑:

function val()
{
    if(document.f1.tb1.value == null || 
       document.f1.tb1.value == undefined ||
       /[^a-zA-Z0-9]+/.test(document.f1.tb1.value))

      alert('invalid username!');
 }

你需要看看
RegExp
为什么要费心处理
+
?只要你有一个字符,测试就已经失败了。另外,解释也很好。你的代码是做什么的?用户如何从中学习,而不是复制粘贴?@Scott Mermelstein我检查它以返回false;首先,因为我没有证书如果将null传递给
,则会发生什么情况。test
检查
如果(!document.f1.tb1.value)
检查真实性。它检查document.f1.tb1是否为null、是否未定义、是否为“”、是否为0以及是否为false。(说到这里,如果0是有效用户名,该检查将不接受。)@Scott Mermelstein,是的,你是对的,这是一个严重的错误,我需要检查它是否等于
null
未定义
,我犯了很多次错误。真实性很有用,但很容易忘记。如果我想只接受字母或字母和数字的组合,那么我该怎么办de I已列出显示了如何检查它是否只按字母或数字排列。我添加了一个编辑,显示了如何检查它是否只按字母排列。对于A-Z、A-Z、0-9和u,您已指定使用以下语句:if(/[\W]/.test(document.f1.tb1.value))。如果我想包括“”,那么我应该使用什么?
if(/[^\W\]/.test
…就是您所需要的。这是“任何不是字母、数字或的东西。”我在前面放了一个\,因为。是正则表达式中的一个特殊字符。如果我想检查任何字符串中的“.”和“\”,那么RegExp是什么?