字符串形式的正则表达式Java掩码密码
我正在寻找一种优雅的方式来屏蔽字符串中的密码。我的问题是,找到它们的正则表达式也包含不需要屏蔽的内容,并且正则表达式本身应该可以由高级用户维护
List<String> regexes = List.of("password = (.*)", "pw = (.*)");
regexs.forEach(r -> maskThePw(str, r, "*");
String maskThePw(String str, String regex, String replace){
return str.replaceAll(regex, replace)
}
现在,这甚至适用于字符串。全部替换?我尝试将“password:”(.*)”作为正则表达式,但这要求我将replace中的第一部分(password:)作为常量
我试着从一开始就分组:
requestStr.replaceAll("(\"password\" : \")(.*)\"", "$1*****")
这是可行的——在某种程度上,但需要组的数量是恒定的,因为我希望模式是可变的。在这种情况下。我需要知道2美元是密码,1美元是密码
我错过什么了吗?我想搜索某个字符串,并将组$1替换为与它包含的星号相同的数量。如果不可能,固定数量的星号也会起作用(如我的示例所示)
所需的输出是:
Input:
password = "test", username = "test"
Output:
password = "****", username = "test"
但对于其他情况:
Input:
secret = "test", username = "test"
Output:
secret = "****", username = "test"
然而,必须能够动态添加触发掩蔽的新模式。例如“键”、“隐藏”或类似
谢谢
共 (0) 个答案