2013-07-02 3 views
0

В настоящее время я пытаюсь создать регулярное выражение для проверки поля ввода пользователя, который требует ввода содержит по меньшей мере одно из каждых из следующих действий:Достоверность ява скрипт

  • прописного символа
  • цифра
  • один из следующих специальных символов: & @ ! # +

Я попытался создать регулярное выражение, которое будет проверять ввод правильно:

/^([a-zA-Z+]+[0-9+]+[&@!#+]+)$/i.test(userpass); 

Однако вход не проверен правильно. Как я должен это делать?

+1

Ваше регулярное выражение требует, чтобы все письма приходят первые, то все числа, то все специальные символы. Кроме того, вы разрешаете '+' в каждой из этих групп, почему? – Barmar

+0

@ Qantas94Heavy - список специальных символов находится в регулярном выражении OP. Чтение между строками, я думаю, они хотят, чтобы тестовая строка содержала по крайней мере один из этих «специальных» символов, по крайней мере одну букву и по меньшей мере одну цифру в любом порядке, но это регулярное выражение применяет определенный порядок в комментарии к Barmar. – nnnnnn

+0

Возможный дубликат [Повторное подтверждение пароля] (http://stackoverflow.com/questions/5068843/password-validation-regex) – Toto

ответ

1

Попробуйте это:

/[a-z]/i.test(userpass) && /[0-9]/.test(userpass) && /[&@!#+]/.test(userpass) 
+0

thnx Bro ..... Теперь его работа ... –

1

можно упростить регулярное выражение с опережающим просмотром

^(?=.*[&@!#+])(?=.*[A-Z])(?=.*\d).+$ 
    ------------- --------- ------- 
     |  |   |->match only if there's a digit ahead 
     |  |->match only if there's a uppercase alphabet ahead 
     |->match only if there's any 1 of [&@!#+] 

[A-Z] будет соответствовать одной заглавной букве

\d будет соответствовать одноразрядным


ИЛИ использовать search

if(input.search(/\d/)!=-1 && input.search(/[&@!#+]/)!=-1) && input.search(/[A-Z]/)!=-1) 
Смежные вопросы