2016-11-30 22 views
1

Язык javascript.Как проверить, содержит ли строка хотя бы одно число, букву и символ, которые не являются ни числом, ни буквой?

Строки, которые будут проходить:

JavaScript1 *

Pu54 325

() 9c

Строки, которые не проходят:

654fff

%^(DFE

Я попробовал следующее:

var matches = password.match(/\d+/g); 
if(matches != null) 
{ 
     //password contains a number 
     //check to see if string contains a letter 
     if(password.match(/[a-z]/i)) 
     { 
      //string contains a letter and a number 
     } 
} 
+0

Да я пробовал много вещей –

ответ

1

Вы можете использовать Regex:

Я взял его отсюда: Regex for Password

var checkPassword = function(password){ 
    return !!password.match(/^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%* #+=\(\)\^?&])[A-Za-z\[email protected]$!%* #+=\(\)\^?&]{3,}$/); 
}; 

I используйте это регулярное выражение:

Минимум 3 символа по меньшей мере, 1 алфавит, 1 Количество и 1 специальный символ:

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%* #=+\(\)\^?&])[A-Za-z\[email protected]$!%* #=+\(\)\^?&]{3,}$" 

Это регулярное выражение будет применять эти правила:?.?

По крайней мере, один буквы английского алфавита (= * [A -Za-г])

По крайней мере одна цифра, (? =. * \ г)

По крайней мере, один специальный символ, (? =. [$ @ $!% # + =() \ ^? &]) Добавить больше, если хотите ...

Минимальная длина 3-х символов (? =. [$ @ $!% #? &]) [A-Za-Z \ d $ @ $!% * # + =() \ ^? &] {3} включают пространства

Если вы хотите добавить несколько специальных символов, вы можете добавить его в Regex, как я добавил «(» (вы должны добавить его в двух местах).

А для тех из вас, кто спрашивают себя, что те два восклицательные, вот ответ: What is the !! (not not) operator in JavaScript?

+0

это идеальное Спасибо –

+0

@ майкл-барабан 2 восклицательных точка для...! функция всегда возвращает логическое значение - посмотрите на это http://stackoverflow.com/questions/784929/what-is-the-not-not-operator-in-javascript – sidanmor

+0

Вы просто взорвали мой разум , Спасибо. –