在html中验证用户名

时间:2014-02-11 16:31:58

标签: javascript

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

 <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>

谁能告诉我解决方案?

2 个答案:

答案 0 :(得分:2)

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]的快捷方式,并查找不是AZ,az,0-9的任何内容和_。

根据您的评论进行修改

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

if(/[^a-zA-Z]/.test(document.f1.tb1.value))

这会检查document.f1.tb1.value的值,看它是否有任何不是字母的东西,即a-z和A-Z之外的任何字母。

有很多关于正则表达式的文档。理解了这个概念后,我会使用MDN作为参考。

答案 1 :(得分:0)

怎么样?:

编辑:

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!');
 }