正则表达式匹配问题
来源: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了
相似问题
回答 1