Если все, что вам нужно, это замаскировать символы, кроме первых N символов, не думайте, что вы действительно сложное регулярное выражение.Для игнорирования первых N символов и замены каждого последующего символа на *
, вы можете написать общее регулярное выражение, подобное этому,
(?<=.{N}).
, где N может быть любым числом, например 1,2,3 и т. Д., И заменитьсовпадение с *
Способ работы этого регулярного выражения заключается в том, что он выбирает каждый символ, имеющий перед собой как минимум N символов, и, следовательно, после выбора символа все следующие символы также выбираются.
Например, в вашем AccountNumber
случае, N = 12, следовательно, ваше регулярное выражение становится,
(?<=.{12}).
Демонстрация регулярных выражений для маскировки AccountNumber
Java-код,
String s = "7835673653678365";
System.out.println(s.replaceAll("(?<=.{12}).", "*"));
Печать,
783567365367****
И для AccountName
случая, N = 4, следовательно, ваше регулярное выражение становится,
(?<=.{4}).
Regex Demo для маскирования имени учетной записи
Java-код,
String s = "chris hemsworth";
System.out.println(s.replaceAll("(?<=.{4}).", "*"));
Печать,
chri***********