2016-05-04 3 views
-2

Я написал этот код javascript и html, чтобы проверить правильность имени пользователя и пароля. По некоторым причинам регулярное выражение для пароля является игонным.
регулярное выражение для пароля игнорируется

function checkDetails() { 
 
    var uname = document.getElementById("uname").value; 
 
    var pass = document.getElementById("pass").value; 
 
    var reuname = /^[a-zA-Z]\w*$/; 
 
    var repass = /^\w+{4,8}$/; 
 
    if (reuname.test(uname)) alert(uname); 
 
    else { 
 
    alert("username should be alphanumeric and start with alphabet"); 
 
    return false; 
 
    } 
 
    if (repass.test(pass)) alert(pass); 
 
    else { 
 
    alert("password should be alphanumeric with 4-8 chars"); 
 
    return false; 
 
    } 
 
}
body { 
 
    background-color: cyan; 
 
} 
 
#content { 
 
    width: 550px; 
 
    margin-left: auto; 
 
    margin-right: auto; 
 
} 
 
h1 { 
 
    text-align: center; 
 
    margin-bottom: 30px; 
 
} 
 
#content table td { 
 
    height: 30px; 
 
}
<div id="content"> 
 
    <h1>Register Form</h1> 
 
    <form method="post" action="" onsubmit="return checkDetails(); return false;"> 
 
    <table> 
 
     <tr> 
 
     <td>Enter UserName:</td> 
 
     <td> 
 
      <input type="text" name="uname" size="20" id="uname" /> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td>Enter Password:</td> 
 
     <td> 
 
      <input type="password" name="pass" size="20" id="pass" /> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td>Re-Enter Password:</td> 
 
     <td> 
 
      <input type="password" name="repass" size="20" id="repass" /> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td>Enter E-mail:</td> 
 
     <td> 
 
      <input type="text" name="email" id="email" /> 
 
      <td> 
 
     </tr> 
 
     <tr> 
 
     <td>Re-Enter E-mail:</td> 
 
     <td> 
 
      <input type="text" name="reemail" id="reemail" /> 
 
      <td> 
 
     </tr> 
 
     <tr> 
 
     <td>Enter Address:</td> 
 
     <td> 
 
      <textarea rows="10" cols="50" name="address" id="address"></textarea> 
 
      <td> 
 
     </tr> 
 
     <tr> 
 
     <td colspan="2" style="text-align: center;"> 
 
      <input type="submit" name="submit" value="submit" style="width: 100px; height: 30px;" /> 
 
     </td> 
 
     </tr> 
 
    </table> 
 
    </form> 
 
</div>

Когда я комментировать эту конкретную линию, однако она работает.

/*var repass = /^\w+{4,8}$/;*/ 

Почему это странное поведение?

+0

Что значит быть «проигнорированным»? –

+0

исполнение продолжается без проверки 'uname' – Pradeep

+1

Вы проверили консоль? У вас есть синтаксическая ошибка в вашем регулярном выражении. –

ответ

2

Проверьте свою консоль! Вы должны увидеть там: Uncaught SyntaxError: Invalid regular expression: /^\w+{4,8}$/: Nothing to repeat(…)

Я не уверен, что вы хотели точно, но, может быть, попробовать это вместо того, чтобы /^(\w+){4,8}$/

+0

Знаете ли вы, что соответствует вашему регулярному выражению? Подсказка: это не имеет смысла. –

+0

Это, вероятно, не XD, я не знаю, что он хотел, чтобы он соответствовал. Основной момент заключался в том, что синтаксис был неправильным –

+0

как кто-то может поддержать этот ответ?! –

1

Вы должны удалить знак «+» вашего регулярного выражения.

var repass = /^\w{4,8}$/; 
2

function checkDetails() { 
 
    var uname = document.getElementById("uname").value; 
 
    var pass = document.getElementById("pass").value; 
 
    var reuname = /^[a-zA-Z]\w*$/; 
 
    var repass = /^\w{4,8}$/; 
 
    if(reuname.test(uname))alert(uname); 
 
    else { 
 
    alert("username should be alphanumeric and start with alphabet"); 
 
    return false; 
 
    } 
 
    if(repass.test(pass))alert(pass); 
 
    else { 
 
    alert("password should be alphanumeric with 4-8 chars"); 
 
    return false; 
 
    } 
 
    return true; 
 
}
body{ 
 
    background-color: cyan; 
 
} 
 
#content{ 
 
    width: 550px; 
 
    margin-left: auto; 
 
    margin-right: auto; 
 
} 
 
h1 { 
 
    text-align: center; 
 
    margin-bottom: 30px; 
 
} 
 
#content table td{ 
 
    height: 30px; 
 
}
<div id="content"> 
 
    <h1>Register Form</h1> 
 
    <form method="post" action="" onsubmit="return checkDetails(); return false;"> 
 
    <table> 
 
     <tr> 
 
     <td>Enter UserName:</td> 
 
     <td> 
 
      <input type="text" name="uname" size="20" 
 
      id="uname" /> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td>Enter Password:</td> 
 
     <td> 
 
      <input type="password" name="pass" size="20" 
 
      id="pass" /> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td>Re-Enter Password:</td> 
 
     <td> 
 
      <input type="password" name="repass" size="20" 
 
      id="repass" /> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td>Enter E-mail:</td> 
 
     <td> 
 
      <input type="text" name="email" id="email" 
 
      /> 
 
      <td> 
 
     </tr> 
 
     <tr> 
 
     <td>Re-Enter E-mail:</td> 
 
     <td> 
 
      <input type="text" name="reemail" id="reemail" 
 
      /> 
 
      <td> 
 
     </tr> 
 
     <tr> 
 
     <td>Enter Address:</td> 
 
     <td> 
 
      <textarea rows="10" cols="50" name="address" 
 
      id="address"></textarea> 
 
      <td> 
 
     </tr> 
 
     <tr> 
 
     <td colspan="2" style="text-align: center;"> 
 
      <input type="submit" name="submit" value="submit" 
 
      style="width: 100px; height: 30px;" 
 
      /> 
 
     </td> 
 
     </tr> 
 
    </table> 
 
    </form> 
 
</div>

Я думаю, что регулярное выражение для пароля не действителен. Можете ли вы попробовать это.

Смежные вопросы