当前位置: 首页 > 面试题库 >

电子邮件屏蔽的正则表达式

卫阳炎
2023-03-14
问题内容

我正在尝试编写一个正则表达式来屏蔽电子邮件地址。下面的例子。

输入:john.doe@example.en.com

输出:j*******@e*********.com

我已经尝试了以下方法,但似乎无法正常工作。

正则表达式(?<=.).(?=[^@]\*?@)

输出:j * @ example.en.com

正则表达式:(?<=.).(?=[^@]\*?)(?=[^\.]\*?\.)

输出:j ******。com

任何帮助,将不胜感激。 演示


问题答案:
  • foo@bar.comf**@b**.com(当前问题)- s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\G(?=[^@]*$)).(?=.*\\.)", "*")(请参阅正则表达式演示)

  • foo@bar.comf**@b*r.com - s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\G(?=[^@]*$)).(?=.*[^@]\\.)", "*")(见正则表达式演示)

  • foo@bar.comf*o@b*r.com - s.replaceAll("(?<=.)[^@](?=[^@]*?[^@]@)|(?:(?<=@.)|(?!^)\\G(?=[^@]*$)).(?=.*[^@]\\.)", "*")(见正则表达式演示)

  • foo@bar.comf**@b*****m - s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\G(?=[^@]*$)).(?!$)", "*")(见正则表达式演示)

  • foo@bar.comf*o@b*****m - s.replaceAll("(?<=.)[^@](?=[^@]*[^@]@)|(?:(?<=@.)|(?!^)\\G(?=[^@]*$)).(?!$)", "*")(见正则表达式演示)

原始答案

如果您不能使用基于 代码的 解决方案,则可以使用

s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\G(?=[^@]*$)).(?=.*\\.)", "*")

参见正则表达式演示

它的作用

  • (?<=.)[^@](?=[^@]*?@)-any炭比其它@[^@])由任何单个字符(前面(?<=.))和接着用比其他任何0以上字符@到一个@(?=[^@]*?@)
  • | - 要么
  • (?:(?<=@.)|(?!^)\\G(?=[^@]*$)) -将字符串中的位置与前面的成功匹配()的末尾的@任何char((?<=@.))或(|)匹配(?!^)\\G,并将除@uo 以外的任何0+字符的末尾匹配到字符串((?=[^@]*$))的末尾
  • . -任何单个字符
  • (?=.*\\.)-后跟任意0+字符,直到.字符串中的最后一个符号。


 类似资料:
  • 问题内容: 首先,我知道不建议使用正则表达式发送电子邮件,但我必须对此进行测试。 我有这个正则表达式: 在Java中,我这样做: 但是,无论电子邮件是否格式正确,正则表达式都会失败。Eclipse内部的“查找并替换”功能可以在同一个正则表达式下正常运行。 任何想法? 问题答案: FWIW,这是我们用来验证电子邮件地址的Java代码。正则表达式非常相似: 工作相当可靠。

  • 问题内容: 我想要一个正则表达式,它将从String中提取电子邮件地址(使用Java正则表达式)。 那确实有效。 问题答案: 这是真正有效的正则表达式。我花了一个小时在网上冲浪并测试了不同的方法,尽管Google在这些页面上排名最高,但大多数方法都无效。 我想与您分享一个有效的正则表达式: 这是原始链接:http : //www.mkyong.com/regular-expressions/how

  • 问题内容: 我正在使用以下正则表达式 它接受#@#.com作为有效电子邮件。我应该使用什么模式? 问题答案: 您应该使用apache- commons电子邮件验证程序。您可以从此处获取jar文件。 这是一个简单的用法示例:

  • 问题内容: 有人可以向我解释这个Java Regex吗? 此正则表达式用于验证 电子邮件地址 。 问题答案: 如今,验证电子邮件地址被认为是一种不好的做法(停止使用regex验证电子邮件地址),尤其是使用问题中的表达式时。例如,这是一个更完整的表达式。 至于此表达式,我们将其分为几部分: 匹配字符串的开头 匹配列表中的至少一个字符 非捕获(请参阅backreference)组,可以重复0..n次,

  • 我使用以下正则表达式来验证单个电子邮件地址。如何使此正则表达式接受以逗号分隔的电子邮件地址列表? 我使用razor视图将正则表达式放置在输入标记中:

  • 所以,我发现“name@.com.com”是一个有效的电子邮件地址,还有更多类似这样的子域。所以现在我希望用户不要进入子域。是否有任何REGEX验证电子邮件地址只在一个域,如“name@gmail.com”,而不是多个域或子域。 我也尝试了不同的google Regex并将其实现到项目中,但出现了同样的问题。 请帮我一下。 谢谢