正则表达式匹配问题

来源:3-1 账户名验证

onemeter_sunshine

2017-12-27 22:05:10

验证用户名的正则是var reg = /\w{6,8}/;但是!%¥&*等这些字符也验证成功,而且字符超过8时,也验证成功,请问是哪里出问题了?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

    <style type="text/css">

        form{

            width:300px;

            background:pink;

            text-align: center;

            padding:30px 0;

            margin:100px auto;

        }

    </style>

</head>

<body>

    <form id="form">

        <p><input type="text" name="name" id="username" placeholder="请输入账户名"></p>

        <span></span>

        <p><input type="text" name="chinaName" id="chinaName" placeholder="请输入中文名"></p>

        <span></span>

        <p><input type="email" name="eamil" id="email" placeholder="请输入邮箱"></p>

        <span></span>

        <p><input type="submit" value="注册" id="submit"></p>

    </form>

    <script type="text/javascript">

        var spans=document.getElementsByTagName("span");

        var username=document.getElementById("username");

     var chinaName=document.getElementById("chinaName");

     var email=document.getElementById("email");

     var submit=document.getElementById("submit");

     var input1=false;

     var input2=false;

     var input3=false;

       username.onblur= function(){

 var reg = /\w{6,8}/;

        if(this.value==""){

        spans[0].innerHTML="请输入账号名";

        spans[0].style.color="red";

        }else{

       

        if(!reg.test(this.value)){

          spans[0].innerHTML="请输入6-10位数字,字母,下划线";

          username.style.color="red";

          spans[0].style.color="red";

        }else{

        username.style.color="green";

        spans[0].innerHTML="";

        input1=true;

        };

        };

       }

   

    </script>

</body>

</html>


写回答

1回答

JH鹰

2017-12-28

首先 你验证的 方法就有问题  用户名 一般是中文  你验证的是 任何字母、字符下划线组成的 一个字符 ,你又用 {6,8} 是 6<=8<=m的字符肯定 超过8了

0

0 学习 · 626 问题

查看课程