Я использовал Hibernate несколько раз в прошлом. Каждый раз, когда я сталкивался с крайними случаями, когда определение синтаксиса переходило к поиску мусора через документацию, Google и старые версии. Это мощный инструмент, но плохо документированный (последний раз я смотрел).
Что касается Spring, то почти каждая работа, с которой я брал интервью или рассматривал ее в последние несколько лет, касалась Spring, она действительно стала стандартом де-факто для Java / Web. Его использование поможет вашим разработчикам стать более конкурентоспособными в будущем, и это поможет вам, поскольку у вас будет большой круг людей, которые будут понимать ваше приложение.
Написание собственных рамок заманчиво, познавательно и весело. Не очень хорошо по результатам.
Если вам нужно одно регулярное выражение, попробуйте:
(?=.*\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
может быть немного широким. Я бы заменил его на такой набор символов: [ - + _! @ # $% ^ & *.,?]
(конечно, не стесняйтесь добавлять больше!)
Вы можете сопоставить эти три группы по отдельности и убедиться, что все они присутствуют. Кроме того, [^ \ w]
кажется слишком широким, но если это '