简体   繁体   中英

Regex to mask characters except first two digits in Java

In Apex, I want to write a regular expression to do the following:

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

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

source string: a123d
output string: a1***

What I have tried so far:

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

output :

********ce

You can use the following code to make the trick:

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

output:

output: sa********

Explanations:

(?<=..). the regex will identify every character from the string respecting the constraint that there exist 2 character before it, this will work from the 3rd character until the end of the string as shown hereunder, then you just replace those characters by a *

DEMO : https://regex101.com/r/gvMoDi/1/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM