регулярное выражение, чтобы разрешить хотя бы один специальный символ, один верхний регистр, один нижний регистр (в любом порядке)

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

Это то, что я до сих пор:

<code> ^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
</code>

но, похоже, они соответствуют символам только в следующем порядке: «специальный символ», «прописные буквы», «строчные буквы».

Любая помощь с благодарностью

 Tim Pietzcker11 мая 2012 г., 21:27
Любые усилия с вашей стороны также приветствуются. Об этом много раз спрашивали ... ты вообще что-нибудь искал?
 Tim Pietzcker11 мая 2012 г., 21:37
Какой язык вы используете?
 Sweta11 мая 2012 г., 21:32
Да, я сделал ! и вот что у меня есть ^. * (? =. {8,}) (? =. * [az]) (? =. * [AZ]) (? =. * [@ # $% ^ & amp; + =]). * $ ..it разрешает все из них, но только в том случае, если они введены в таком порядке, как spl char, Uppercase, lower case. Где-нибудь между, это не займет! Спасибо!
 Shiplu Mokaddim11 мая 2012 г., 21:37
1 лайнер RegEx не волшебный все время.
 Felix Kling11 мая 2012 г., 21:30
regular-expressions.info отличное место для начала.

Ответы на вопрос(3)

function check($string){
   return    preg_match("/[`!%
function check($string){
   return    preg_match("/[`!%$&^*()]+/", $string) 
          && preg_match("/[a-z]+/", $string) 
          && preg_match("/[A-Z]+/", $string) ;
}
amp;^*()]+/", $string) && preg_match("/[a-z]+/", $string) && preg_match("/[A-Z]+/", $string) ; }

Не забудьте настроить список специальных символов. Потому что я не знаю, какие персонажи вы считаете особенными.

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

function checkRegex(string) {
    var checkSpecial = /[*@!#%&()^~{}]+/.test(string),
        checkUpper = /[A-Z]+/.test(string),
        checkLower = /[a-z]+/.test(string),
        r = false;

        if (checkUpper && checkLower && checkSpecial) {
            r = true;
        }

        return r;

        }

и затем проверьте, верно ли это или ложно.

var thisVal = document.getElementById('password').value;
var regex = checkRegex(thisVal);

Еслиvar regex являетсяtrue тогда условие выполнено.

Решение Вопроса

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

на самом деле должно работать просто отлично, но вы можете сделать это намного лучше, удалив первый.*:

^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

будет соответствовать любой строке длиной не менее 8 символов, которая содержит как минимум один символ ASCII в нижнем и одном верхнем регистре, а также как минимум один символ из набора@#$%^&+= (в любом порядке).

 11 мая 2012 г., 21:38
Можно ли использовать загадки произвольной ширины?
 10 нояб. 2014 г., 12:10
@TimPietzcker Если я хочу ограничить количество символов. Скажем, длина строки должна быть от 8 до 15.
 11 мая 2012 г., 21:40
@ acheong87 - Конечно, почему бы и нет.
 11 мая 2012 г., 21:45
@TimPietzcker: Ах, я думал, что ограничение распространяется на всех прогнозистов; виноват.
 11 мая 2012 г., 21:40
@ acheong87: Любой язык, который поддерживает прогнозирование, также поддерживает поиск произвольной длины. В этом отношении хитроумно выглядят только взгляды - только обработчики регулярных выражений JGSoft и .NET могут обрабатывать взгляды произвольной длины.

Ваш ответ на вопрос