有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

字符串形式的正则表达式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) 个答案