Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于查找具有一个@且不应以开头的字符串的正则表达式。或者以_Java_Regex_Jakarta Ee_Email Validation - Fatal编程技术网

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)