2013-12-03 3 views
0

У меня есть форма, которая запрашивает пароль, и я хочу проверить, имеет ли пароль не менее восьми символов, и из этих восьми символов по крайней мере два должны быть цифрами, а два должны быть буквами в Любой заказ. Я пытаюсь с этим:as3 регулярное выражение для проверки пароля

function validatePassword():void 
    { 
      var passVal:String = pass.text; 
      if(validPass(passVal)) 
      { 
       trace("Password Ok"); 
       sendForm(); 
      } 
      else 
      { 
       trace("You have entered an invalid password"); 
      } 
      function validPass(passVal:String):Boolean{ 
       var pw:RegExp = /^?=.{8,}[A-Za-z]{2,}[0-9]{2,}/; 
       return(pw.test(passVal)); 
      } 
    } 

Но это не работает. Что я делаю неправильно?

Любая помощь была бы действительно оценена!

+0

просто регулярное выражение ** шаблон ** не является правильным;) – Tafari

+1

Прежде чем задать вопрос, выполните поиск _JavaScript Password Validation_ (AS3 использует синтаксис JS). Этот вопрос задают ЛОТ. – ridgerunner

ответ

2

использовать этот шаблон ^(?=.{8})(?=(.*\d){2})(?=(.*[A-Za-z]){2}).*$

  • ^ якорь
  • (?=.{8}) смотреть вперед, по крайней мере, 8 символы
  • (?=(.*\d){2}) смотреть не менее 2-х цифр в любом порядке
  • (?=(.*[A-Za-z]){2}) loo K впереди, по крайней мере, 2 буквы в любом порядке
  • .*$ поймать все до конца, если прошли предыдущие условия
+0

Это работает. Спасибо! – boxxer151

1

Проблема заключается в том, что ваше регулярное выражение заставляет цифры следовать буквам ([A-Za-z]{2,}[0-9]{2,}). В то время как можно написать такое регулярное выражение, я предлагаю использовать простую проверку длины и два регулярные выражения:

 function validPass(passVal:String):Boolean{ 
      if (passVal.length < 8) 
       return False; 

      var letterRegex:RegExp = /^.*?[A-Za-z].*?[A-Za-z].*?$/; 
      var numberRegex:RegExp = /^.*?\d.*?\d.*?$/; 
      return letterRegex.test(passVal) && numberRegex.test(passVal); 
     } 
Смежные вопросы