如何使用Java正则replaceAll方法替换JSON字符串中指定敏感字段的值
适配需求的正则表达式及使用示例
你需要的正则为:(?<=(password|userword)":")[^"]*
正则说明
(?<=(password|userword)":"):正向零宽后行断言,定位到password":"或者userword":"之后的位置,这部分内容不会被替换[^"]*:匹配连续的非双引号字符,正好对应JSON里字符串类型的字段取值
Java实现代码
String target = "[{\"nickName\":\"andy\",\"password\":\"wei\",\"userword\":\"weitest32123\"}]"; String regex = "(?<=(password|userword)\":\")[^\"]*"; String res = target.replaceAll(regex, "xxx");
执行后得到的res就是你预期的结果:[{\"nickName\":\"andy\",\"password\":\"xxx\",\"userword\":\"xxx\"}]
注意事项
上述正则仅适配标准无转义双引号的JSON字符串场景,如果你的JSON存在字段值内转义双引号、多层嵌套等复杂情况,更稳妥的方案是先将JSON字符串解析为Java对象,修改对应字段后再序列化回字符串。
内容的提问来源于stack exchange,提问作者Wei。
相关产品推荐
相关产品推荐

