import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^\n"
+ "(?=.*?[0-9]) #содержит хотябы одну цифру\n"
+ "(?=.*?[A-Z]) #содержит хотябы одну латинскую прописную букву\n"
+ "(?=.*?[a-z]) #содержит хотябы одну латинскую строчную букву\n"
+ "(?=.*?[^0-9A-Za-z]) #содержит хотябы один знак пунктуации: !\"#$%&'()*+,-./:;<=>?@[\\]^_`\\{|\\}~\n"
+ "#не имеют 6 и более подряд совпадающих символов типа \"zzzzzz\", \"000000\"\n"
+ "(?!.*?(.)\\1{5,})\n"
+ "#не имеет \"плохих\" последовательностей типа \"123456\", \"abcdef\", \"qwerty\"\n"
+ "(?!.*?123456)\n"
+ "(?!.*?(?i:qwerty|asdfgh|zxcvbn|qazwsx|abcdef))\n"
+ "#допускаются только цифры, английские буквы и знаки пунктуации\n"
+ "[\\x20-\\x7e]{8,72} #ограничения по кол-ву символов\n"
+ "$";
final String string = "_012345_zZ\n"
+ "_123456_zZ\n"
+ "_00000_zZ\n"
+ "_000000_zZ\n"
+ "^@},hJu>[4Bo7TGX\n"
+ "_}24I:9t58Tu?m@e\n"
+ "|YlzEc|1\n"
+ "#m_4xF%t\"Bu5jeb$\n"
+ "12345678aA@ \n"
+ "12345678 aA@\n"
+ " 12345678aA@\n"
+ "123Qwerty45678aA\n"
+ "^@},^@},^@},\n"
+ "AbCdEfGhIi\n"
+ "abcdefgh123\n"
+ "ABCDEFGH1234";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html