java - 在 JavaScript/Groovy 中使用正则表达式屏蔽手机号码

标签 java regex

我正在尝试使用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

Demo

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/

相关文章:

java - Gradle 依赖排除后依赖仍然在类路径上

java - 使用 checkStyle 强制执行 java 8 约定

regex - 正则表达式 : How to find dashes between words

Java SE/EE JDK 混淆

java - 以编程方式创建一个新的 Xtext 项目

java - 如何获得该程序的格式化显示? (初学者)

java - 在每个第 n 个字符处拆分一个字符串

regex - 优化这个可怕的正则表达式

javascript - 正则表达式以逗号分隔,但不包括大括号、方括号和圆括号内的那些

c# - 使用正则表达式获取引号内的文本