【发布时间】:2018-05-04 16:40:37
【问题描述】:
我需要屏蔽电话号码。它可能由数字、+(国家代码)和破折号组成。国家代码可以由 1 个或多个数字组成。我创建了这样的正则表达式来屏蔽除最后 4 位以外的所有数字:
inputPhoneNum.replaceAll("\\d(?=\\d{4})", "*");
对于此类输入:+13334445678
我得到这个结果:+*******5678
但是,它不适用于这样的输入:+1-333-444-5678 特别是,它只返回相同的数字而没有任何变化。虽然所需的输出屏蔽了除最后 4 位、加号和破折号之外的所有数字。 这就是为什么我想知道如何更改正则表达式以包含破折号?如果有任何帮助,我将不胜感激!
【问题讨论】:
-
第二个数字的预期输出是
+*-***-***-5678吗? -
+1-23-45-67是不是应该考虑的情况,如果是,应该如何屏蔽? -
检查此解决方案将对您有所帮助。 stackoverflow.com/questions/34675260/…
-
我的意思是
.replaceAll("\\d(?=(?:\\D*\\d){4})", "*"),但不知道这是否是您真正需要的。 -
@SebastianProske 这种情况不应考虑。大意是结尾有***-****这样的数字和国家代码开头的可能不同