【发布时间】:2021-02-08 06:38:36
【问题描述】:
我只想显示电子邮件的前两个和最后两个字符,如下所示:
Email - 123456789@gmail.com
result - 12*****89@gmail.com
我正在使用此正则表达式将匹配替换为 * - (?<=.{2}).*(?=.{2}@)。
使用的代码 sn-p:
String email = "123456789@gamil.com";
System.out.println(email.replaceAll("(?<=.{3}).*(?=.{3}@)", "*"));
// prints - 12**89@gamil.com
// Adds only 2 ** in the middle
// Required * for each replaced character like - 12*****89@gmail.com
即使正则表达式匹配正确的东西,它总是用** 替换中间部分。但我希望每个角色都有一个*。是什么问题以及如何解决?
【问题讨论】:
-
也许正则表达式不是最好的解决方案?⠀ 如果我必须维护这样的代码(或者特别像当前答案中更复杂的正则表达式),我会做很多比使用简单的
split("@")&c 更令人头疼(可能还有代码破坏)——有点啰嗦但更容易理解。
标签: java regex kotlin regex-lookarounds