正则表达式屏蔽 Java 中除前两位数字以外的字符

Regex to mask characters except first two digits in Java

在 Apex 中,我想编写一个正则表达式来执行以下操作:

source string: abcdefg
output string: ab*****

source string: 123456789
output string: 12*******

source string: a123d
output string: a1***

到目前为止我尝试过的:

String t= "salesforce"; 
String r = t.replaceAll("\w(?=\w{2})", "*"); 
system.debug("==r=="+r); 

输出:

********ce

您可以使用下面的代码来实现这个技巧:

String t= "salesforce"; 
String r = t.replaceAll("(?<=..).", "*"); 
System.out.println("output: "+r);

输出:

output: sa********

说明:

(?<=..). 正则表达式将识别字符串中的每个字符,并遵守在它之前存在 2 个字符的约束,这将从第 3 个字符开始工作,直到字符串的末尾,如下所示,然后您只需用 *

替换这些字符

演示: https://regex101.com/r/gvMoDi/1/