2014-08-27 4 views
0

Я работаю над созданием учетной записи для колледжа.Проверка, содержит ли строка число и символ

Моя проблема заключается в том, что я хочу возвращать сообщения об ошибках, если пароль, который пользователь устанавливает, не содержит цифр и/или символов, и мне нужна помощь.

Пароль должен содержать буквы более высокого и нижнего регистра, число и символ (!, #,% Или &). Мне нужно, чтобы сообщения об ошибках были конкретными.

Любые предложения? Я использую HTML и JS.

ответ

0

Я предложил бы использовать Regex и выполнив проверку по каждому

Как так:

function validateStr(str) { 
    var regex = new RegExp("[A-Z]+"); // Check for uppercase first 
    if(regex.test(str) == true) { 
     regex = new RegExp("[0-9]+"); // Now we check for numbers 
     if(regex.test(str) == true) { 
      regex = new RegExp("[a-z]+"); // checking now for lowercase 
      if(regex.test(str) == true) { 
       return 1; 
      } else return 2; 
     } else return 3; 
    } else return 4; 
} 

Я не включил параметр «Специальный символ», потому что вы должны включать в себя те индивидуально к одному регулярное выражение, которое я не рекомендую вам делать. Я изо всех сил пытаюсь заставить его работать над JSFiddle, поэтому я не включил его, а просто разместил комментарий, если вам нужно, чтобы я объяснил дальше.

+0

Я не видел перед использованием, как return 1, 2, 3, 4 ... –

+0

Я сделал это, чтобы вы могли использовать его, чтобы указать конкретный текст ошибки пользователю, если хотите. – Matthew

+0

Это очень полезно, спасибо. Я могу немного поиграть и посмотреть, могу ли я самостоятельно включать специальные изменения. –

1

Хотя решение на основе JS и regexp является хорошим началом (и быстрее, поскольку выполняется на стороне клиента), я бы рекомендовал дважды проверить эту серверную часть.

Поскольку я вижу, что вы, вероятно, используете eZ Publish (основываясь на тегах этого вопроса ...), не стесняйтесь переопределять класс eZUser (с системой автозагрузки eZ Publish или с PHP include path magic), а затем взломать eZUser :: validatePassword() для выполнения ваших требований.