php - 屏蔽电子邮件正则表达式
问题描述
我正在尝试做一个 php 正则表达式来屏蔽电子邮件,以便
example@gmail.com
转向e*****e@gmail.com
.
$maskedEmail=preg_replace('/^*@/', '*', $email);
解决方案
您可以使用
preg_replace('~((?!^)\G|^[^@])[^@](?=[^@]+@)~', '$1*', $s)
查看正则表达式演示
细节
((?!^)\G|^[^@])
- 第 1 组:上一个匹配的结尾或字符串的开头以及除 a 之外的任何字符@
[^@]
- 一个字符以外的字符@
(?=[^@]+@)
- 除了紧跟在当前位置右侧的a 之外 ,需要 1+ 个字符(这+
在此处很重要,您不能使用*
)的正向前瞻。@
@
替换是在第 1 组中捕获的值(以便第一个字符保留在字符串中,然后除 a 之前的最后一个字符之外的所有字符@
都替换为*
.
推荐阅读
- javascript - Node.js mongoose 连接错误
- python - pandas:将所有具有 2 个值的列转换为 True/False
- network-programming - RPC 调用“svc_fd_create”在 SOLARIS 上失败,并出现“错误文件号”错误
- python - 调用 subprocess.call(...) 产生错误“[WinError 2] System can't find the specified file”
- hadoop - 有不同的方法来安装 cloudera hadoop 包吗?
- bash - 如何使用 sed 在带有变量的 bash 脚本中附加一行
- javascript - 将 IdentityServer 与 ASP.NET + 嵌入式 SPA JS 框架一起使用
- ios - Facebook 无法从 iTunes App Store 检索我的 iPhone Store ID
- javascript - 如何在 javascript 中关闭/隐藏 html 导航选项卡?
- javascript - materializeCSS - 带有标签作为页面链接的扩展导航栏