пароль в письме kotlin капитализирован [dубликат]

Вы можете проверить, установлен ли какой-либо бит младшего порядка. Если это так, посмотрите на нижний порядок оставшихся бит. например:

32bit int - проверка, задан ли какой-либо из первых 16. Если да, проверьте, установлен ли какой-либо из первых 8. если это так, ....

если нет, проверьте, установлен ли какой-либо из верхних 16 ..

По существу это двоичный поиск.

112
задан Amarghosh 13 October 2009 в 12:55
поделиться

3 ответа

Если вам нужно одно регулярное выражение, попробуйте:

  (? =. * \ d) (? =. * [az]) (? =. * [AZ]) (?  =. * \ W)  

Краткое объяснение:

  (? =. * [Az]) // используйте положительный взгляд вперед, чтобы увидеть,  (? =. * [AZ]) // используйте положительный взгляд вперед, чтобы увидеть, существует ли хотя бы одно письмо в верхнем регистре (? =. * \ d) // используйте положительный взгляд вперед, чтобы узнать, по крайней мере,  существует одна цифра (? =. * \ W]) // используйте положительный взгляд вперед, чтобы увидеть, существует ли хотя бы один неглавный символ  

И я согласен с SilentGhost, \ W может быть немного шире. Я бы заменил его набором символов следующим образом: [- + _! @ # $% ^ & Amp; *.,?] (не стесняйтесь добавлять больше, конечно!)

271
ответ дан Community 15 August 2018 в 19:20
поделиться
  • 1
    Еще раз спасибо Барту. Я не знал о позитивном взгляде. – Amarghosh 14 October 2009 в 05:30
  • 2
    Что произойдет, если я изменю последний . + на . * ? Я не мог придумать тестовый пример, который терпит неудачу с . * . В этом контексте они одинаковы? «Ноль или более символов». кажется, все в порядке - просто ищет подтверждение. – Amarghosh 14 October 2009 в 10:49
  • 3
    @Amarghosh: в этом случае это не имеет значения. Из-за положительного внешнего вида строка уже содержит не менее 4 символов. Поэтому не имеет значения, чтобы изменить . + на . * или даже . {4,} . – Bart Kiers 14 October 2009 в 11:03
  • 4
    Если вы захотите добавить небольшое объяснение, у меня возникли проблемы с пониманием того, как комбинация этих взглядов гарантирует, что по крайней мере 1 из каждого набора символов будет присутствовать – Sharlike 22 July 2013 в 20:46
  • 5
    @ikertxu, попробуйте что-то вроде этого: ^ (? =. * [az]) (? =. * [AZ]) (? =. * \ d) (?!. * [& amp;% $]) . {6} $ – Bart Kiers 21 October 2014 в 09:28

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

  (. * [Az]. *) // Для нижних регистров (. * [AZ]. *) // Для верхних случаев (. *  \ d. *) // Для цифр  

Таким образом вы ищете независимо от того, в начале, в конце или посередине. В вашем случае у меня много проблем со сложными паролями.

4
ответ дан Juan F 15 August 2018 в 19:20
поделиться
  • 1
    Вы не проверяете символы как запрошенные OP. – Casimir 25 May 2018 в 12:56

Вы можете сопоставить эти три группы отдельно и убедиться, что все они присутствуют. Кроме того, [^ \ w] кажется слишком широким, но если это то, что вы хотите, вы можете заменить его на \ W .

4
ответ дан SilentGhost 15 August 2018 в 19:20
поделиться
  • 1
    Благодарю. Я не знал о \ W. Просто посмотрел на него, чтобы найти, что он соответствует не Word. Есть ли разница между \ W и [\ W]? Является ли [\ W] избыточным? – Amarghosh 14 October 2009 в 05:29
  • 2
    @Amarghosh, да, \ W и [\ W] приводят к тому же. – Bart Kiers 14 October 2009 в 06:31
Другие вопросы по тегам:

Похожие вопросы: