Java 用于查找具有一个@且不应以开头的字符串的正则表达式。或者以
用于查找具有一个Java 用于查找具有一个@且不应以开头的字符串的正则表达式。或者以,java,regex,jakarta-ee,email-validation,Java,Regex,Jakarta Ee,Email Validation,用于查找具有一个@且不应以开头或以结尾的字符串的正则表达式hello@Same这是有效的。hello@Same, hello@Same. 及hello@sdj@这些都是无效的 (^([^@]+)@([^@])+$)(^[^\\.].*$)(^.[^\\.]$)有什么问题 所有这三个部分都可以单独工作,但当我们组合在一起不起作用时,您的regexp中有多个行首符号^和多个行尾符号$ ^([^.@]+)@([^.@]+)$ 要将其分解为更易于管理的部分: ^([^.@]+) // Start w
@
且不应以
开头或以
结尾的字符串的正则表达式hello@Same这是有效的。hello@Same, hello@Same. 及hello@sdj@这些都是无效的
(^([^@]+)@([^@])+$)(^[^\\.].*$)(^.[^\\.]$)
有什么问题
所有这三个部分都可以单独工作,但当我们组合在一起不起作用时,您的regexp中有多个行首符号
^
和多个行尾符号$
^([^.@]+)@([^.@]+)$
要将其分解为更易于管理的部分:
^([^.@]+) // Start with anything except . or @
@ // @ must be somewhere in the expression
([^.@]+)$ // End with anything except . or @
它与您的规范不完全匹配(不能以
@
开头或结尾),但如果您正在验证电子邮件地址,这可能是一个理想的属性。如果您希望匹配,则不能仅连接正则表达式
都是
另一个错误是尝试验证电子邮件地址
使用正则表达式。这根本不管用。唯一的
确定用户是否输入了有效地址的方法是发送
电子邮件
与您的规范匹配的正则表达式将是
^(?=[^@]+@[^@]+$)[^.].*[^.]$
但是,正如我所说,这不是验证电子邮件地址的好方法 这是一个很好的评论:为什么不允许多个@s或者没有起始点?两者在电子邮件地址中都可能有效。基本上。。。我想知道的是,我可以说一个表达式应该匹配(patternA)&(patternB)&(patternC),并且每个模式都可以在表达式上单独计算。。每个图案都应该有自己的线起点符号和线终点符号。。。在上面的例子中。。。patternA仅计算@,patternB to不以开头。然后Pattern C to不会以。如何在一个地方将这三个符号组合起来?具有patternA和patternB含义的表达式是
(?=patternA)patternB
此表达式允许多个@符号(例如@boo@boo@). 另外,为什么要使用“[^@]|\w+”(单个非@字符,或一个或多个字母数字)?这不是OPs规范的一部分@Jens-修复了原来的问题,但现在有另一个问题(目前不允许周期)。明天早上我再看一遍。我开始明白你所说的验证电子邮件地址的坏方法是什么意思了。8)