【发布时间】:2021-08-22 01:14:48
【问题描述】:
有人知道我如何制作这种模式的正则表达式吗?
对于我的问题,输入示例为ggggggg@aaaaa.com.br,预期输出为gg***gg@aa***.com.br。
如您所见,如果字符串超过 4 个字符,@ 之前的字母将仅替换为 4 个字符,遵循模式 gg**gg@,@ 之后的两个字母后跟 * 直到电子邮件提供商的末尾。
另一个例子是 3 个或更少的字母:
从ggg@aaaaa.com 到g*g@aa***.com
我尝试过这种方式,但仍然无法正常工作:
regex = /(^.{2})(.*)(.{2})@(.{2})(?:(?=\.)(.*)|(\w+)(.*))/gm;
感谢您的帮助!
【问题讨论】:
-
你有两个不同的问题——字符串匹配和字符串替换。你能更清楚地说明你对每个人都有什么吗?
-
我想用上述模式屏蔽一封电子邮件,用正则表达式我想用 js 进行正则表达式替换。
-
如果您使用任何合理的语言,您应该强烈考虑编写字符串切片代码来执行此转换。棘手的正则表达式和替换是现有代码中最令人困惑和最容易出错的部分。负责维护这件事的人(包括你未来的自己)会感谢你的。注意:您可以合理地使用捕获正则表达式来获取切片。
标签: regex regexp-replace