Regex 用于从开头或结尾屏蔽给定数字的正则表达式

Regex 用于从开头或结尾屏蔽给定数字的正则表达式,regex,Regex,我有一个场景,其中必须根据配置的正则表达式模式屏蔽应用程序返回的两个数字。我有以下两个数字,需要屏蔽如下所示 20128569-->2012**** 40953186-->**3186 我需要两个正则表达式模式来使用String.replaceAll(…)或其他可能的方式相应地实现此模式 public static void main(String[] args) { String value = "20128569"; String pattern = "(?<=.{

我有一个场景,其中必须根据配置的正则表达式模式屏蔽应用程序返回的两个数字。我有以下两个数字,需要屏蔽如下所示

  • 20128569-->2012****
  • 40953186-->**3186

我需要两个正则表达式模式来使用String.replaceAll(…)或其他可能的方式相应地实现此模式

public static void main(String[] args) {
    String value = "20128569";
    String pattern = "(?<=.{4}).?" ;

    String formattedValue = value.replaceAll(pattern, "*");
    System.out.println(formattedValue);
}
publicstaticvoidmain(字符串[]args){
字符串值=“20128569”;

String pattern=“(?这很容易做到,但仍然很难理解在什么情况下需要哪个正则表达式

无论哪种方式,
(\d*)\d{4}
并将其替换为
$1****
,如图所示


\d{4}(\d*)
并替换为
***$1

如果您想要的是两个正则表达式模式,而不仅仅是前四个字符,那么您应该描述要屏蔽的模式。我需要两个正则表达式模式来为提供的正则表达式模式相应地屏蔽给定的数字。实际上,我想要配置两个正则表达式模式数据库中的表达式模式,并需要相应地屏蔽两个数字,如帐号和银行排序代码。因此,我需要编写一个方法,该方法接受regualr表达式模式和数字,并应相应地返回屏蔽的数字。但使用这种方法,我们无法编写通用方法,以便使用给定的注册表屏蔽给定的数字有时我的第二个数字可能是6位数,我们必须相应地屏蔽最后4位数。
        String maskedAccountNumber = Pattern.compile(aRegexPattern).matcher(aKey).replaceFirst(MASK_CHARACTER);

        StringBuilder maskBuffer = new StringBuilder();
        for(int i = 0; i <= aKey.length() - maskedAccountNumber.length() ; i++){
              maskBuffer.append(MASK_CHARACTER);
        }
        return      maskedAccountNumber.replace(MASK_CHARACTER, maskBuffer.toString());