我想在作为安全协议(protocol)一部分进行日志记录时从 JSON 中屏蔽 Java 中的电子邮件地址。 我尝试过使用字符串操作进行替换的原始方法,但我不可能搜索整个项目。 SL4J中是否有任何可能的配置或正则表达式是唯一的出路
如果日志(slf4j)打印的响应如下:
{
"any_key": {
"salt": "salt_here",
"sel": "sel_here",
"rules": [
{
"variation": 0,
"clauses": [
{
"attribute": "email",
"op": "in",
"values": [
"jack.jones@gmail.com",
"david.beckham@yahoo.com"
],
"negate": false
}
]
}
]
}
}
它应该在日志中打印 json,如下所示:
{
"any_key": {
"salt": "salt_here",
"sel": "sel_here",
"rules": [
{
"variation": 0,
"clauses": [
{
"attribute": "email",
"op": "in",
"values": [
"jac*******@******com",
"dav**********@******com"
],
"negate": false
}
]
}
]
}
}
最佳答案
(?<=[\"|\']\p{L}{3}).*\@.*(?=com)
此正则表达式将检测 \"\p{L}{3}
("后跟三个字母)和 com
之间的任何内容。然后,您可以迭代匹配并将每个字符替换为 *
(@ 除外)。
编辑:
要包含“something@xyz.com”(som******@****com
),请使用更新后的正则表达式,现在允许 \"
和 \'
作为分隔符。
关于java - SL4J 配置更改或正则表达式以屏蔽 Json 中的电子邮件(由 '@' 和 '.com' 识别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50350230/