RegEx, чтобы удостовериться, что строка содержит по крайней мере один символ нижнего регистра, прописной символ, цифру и символ

Я использовал Hibernate несколько раз в прошлом. Каждый раз, когда я сталкивался с крайними случаями, когда определение синтаксиса переходило к поиску мусора через документацию, Google и старые версии. Это мощный инструмент, но плохо документированный (последний раз я смотрел).

Что касается Spring, то почти каждая работа, с которой я брал интервью или рассматривал ее в последние несколько лет, касалась Spring, она действительно стала стандартом де-факто для Java / Web. Его использование поможет вашим разработчикам стать более конкурентоспособными в будущем, и это поможет вам, поскольку у вас будет большой круг людей, которые будут понимать ваше приложение.

Написание собственных рамок заманчиво, познавательно и весело. Не очень хорошо по результатам.

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

2 ответа

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

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)

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

(?=.*[a-z])        // use positive look ahead to see if at least one lower case letter exists
(?=.*[A-Z])        // use positive look ahead to see if at least one upper case letter exists
(?=.*\d)           // use positive look ahead to see if at least one digit exists
(?=.*\W])        // use positive look ahead to see if at least one non-word character exists

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

324
ответ дан 23 November 2019 в 22:57
поделиться

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

5
ответ дан 23 November 2019 в 22:57
поделиться
Другие вопросы по тегам:

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