我正在尝试使用replaceAll 屏蔽手机号码 屏蔽应该是这样的
+1(123)456-7890 ----> +1(2**)4**-**78
+11234567890 -----> +12**4****78
+1-123-456-7890 --->+1-2**-4**-**78
我尝试使用代码:
test.replaceAll("\\d(?!\\d{0,3}\$)", "*")
但它掩盖了除最后 4 位之外的所有数字。
最佳答案
您可以使用正则表达式
(\+1[(-]?)\d(\d)\d([)-]?\d)\d{2}([)-]?)(\d{2})\d{2}
匹配整个字符串并将字符串替换为
$1$2**$3**$4**$5
Javascript 的正则表达式引擎执行以下操作。
(\+1[(-]?) # match '+1' opt. followed by '(' or '-' in cap grp 1
\d # match a digit (discard)
(\d) # match a digit in cap grp 2
\d # match a digit (discard)
([)-]?\d) # match a digit opt. preceded by ')' or '-' in cap grp 3
\d{2} # match 2 digits (discard)
([)-]?) # optionally match ')' or '-' in cap grp 4
(\d{2}) # match 2 digits in cap grp 5
\d{2} # match 2 digits (discard)
关于java - 在 JavaScript/Groovy 中使用正则表达式屏蔽手机号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61276906/