排除数字 emailid 的正则表达式

Regular Expression to exclude numerical emailids

我有以下一组示例电子邮件 ID

EmailAddress
1123
123.123
123_123
123@123.123
123@123.com
123@abc.com
123mbc@abc.com
123mbc@123abc.com
123mbc@123abc.123com
123mbc123@cc123abc.c123com

如果 mailid 在@

之前完全包含数字,则需要删除它们
Expected output:
123mbc@abc.com
123mbc@123abc.com
123mbc@123abc.123com
123mbc123@cc123abc.c123com

下面我用的是Java Rex。但它消除了一切。我有写这些表达式的基础知识。请帮我改正下面的一个。提前致谢。

[^0-9]*@.*

试试这个:

[^\d\s].*@.+

它将匹配在 @ 符号前至少有一个字母或符号的电子邮件。

以下正则表达式只允许满足您的规范的电子邮件地址通过:

(?m)^.*[^0-9@\r\n].*@

观察到你必须指定多行匹配(m标志。见现场演示。该解决方案采用嵌入标志语法m标志。你也可以调用Pattern.compilePattern.MULTILINE 参数。 ).

regex101 现场演示。

说明

策略:将基本合理的电子邮件地址定义为包含 @ 的单行字符串,严格排除数字前缀。

  • ^:行首锚点
  • @:基本合理的电子邮件地址必须与 at 符号匹配
  • [^...]:at符号前的一个字符不能是数字,也不能是CR/LF。 @ 也包括在内,测试的非数字字符不能是第一个 at-sign !
  • .*:在非数字测试前后,允许任意字符串(好吧,实际上它们不是,但是真正的语法验证电子邮件地址可能不应该出现在这里,并且出于可靠性和代码可维护性的原因,绝对不应该基于正则表达式)。字符串需要在模式中表示,因为模式是锚定的。

你的意思是这样的吗? (.*[a-zA-Z].*[@]\w*\.\w*)

breakdown
.* = 0 or more characters
[a-zA-Z] = one letter
.* = 0 or more characters
@
\w*\.\w* endless times a-zA-Z0-9 with a single . in between

这样你就有了至少包含一个字母的邮件
https://regex101.com/r/qV1bU4/3

查看测试

根据 ccf 的建议进行了编辑并更新了细分