Java 无法匹配myname@myemail.edu.in在爪哇
我正在尝试匹配字符串m-y\n。ame@myemail.edu.in使用以下正则表达式:Java 无法匹配myname@myemail.edu.in在爪哇,java,regex,email,Java,Regex,Email,我正在尝试匹配字符串m-y\n。ame@myemail.edu.in使用以下正则表达式: ([_A-Za-z0-9-.]+@[a-z0-9-]+[.][a-z]{2,3}[.][a-z]{2,3}) 完整的正则表达式是: ([-A-Za-z0-9._!#$%^&*|{}'~`]+@[a-z0-9_-]+[\\.][a-z]{2,3}[\\.][a-z]{2,3})|([A-Za-z0-9.!#$%^&*|{}\"~`]+@[a-z0-9_-]+[\\.][a-z]
([_A-Za-z0-9-.]+@[a-z0-9-]+[.][a-z]{2,3}[.][a-z]{2,3})
完整的正则表达式是:
([-A-Za-z0-9._!#$%^&*|{}'~`]+@[a-z0-9_-]+[\\.][a-z]{2,3}[\\.][a-z]{2,3})|([A-Za-z0-9.!#$%^&*|{}\"~`]+@[a-z0-9_-]+[\\.][a-z]{4})|([A-Z.a-z0-9!#$%^&*|{}'~`]+@[a-z0-9_-]+[\\.][a-z]{3})|([A-Za-z0-9.!#$%^&*_-|{}'~`]+@[a-z0-9_-]+[\\.][a-z]{2})
为了能够匹配指定的模式,我需要对正则表达式进行哪些更改
以下是我的一些测试用例:
1.vamsi$deepak0@gmail.com
2.v_a_m_s_i_d_e_e_p_a_k_0_3@gmail.com
3.v-a-m_si.deepak@gmail.com
4.vamsi$deepak03@gmail.co.in
5.v_a_m_s_i_d_e_e_p_a_k_0_3@gmail.co.in
6.v-a-m_si.deepak@gmail.co.in
7.vamsideepask03@bits-pilani.edu
8.vams-ideep_ask03@bits-pilani.edu
9.vamsi-d_.eepak03@gmool.biz
10.songs@gaana.in
11.vamsideep_-.ak03@footfall.net
12.jackspa_-.rrow@pirates.org
13.nomorespaceshuttles@nasa.gov
The most scary test case seems to be
14.vamsideepak@gmail.iovamsideepak@gmail.comvamsideepak0@gmail.co.invamsideepak@gmail.info
正则表达式Iam当前正在使用匹配项
vamsideepak@gmail.iova,msideepak@gmail.comv
依此类推。如果我将使用的表达式的顺序颠倒,以匹配后面字符数较少的表达式,则会导致反转匹配值,如下所示:
vamsideepak@gmail.io,vamsideepak@gmail.co
等等
我应该如何确保与案例14正确匹配。我应该分别使用这些组进行验证吗 这应该适合您:
[A-Za-z0-9!#$%&’*+-/=?^_`\.{|}~]+@([a-z0-9_-]+[\.]?)*
下面函数中的正则表达式匹配myname@myemail.edu.in同时防止无效电子邮件。例如,它可以防止电子邮件地址中的相邻句点,如我的。。name@myemail.edu.in根据RFC 822,这是无效的
public static boolean isValidEmail(String email) {
return email.matches("\\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,4}\\z")
&& email.matches("^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*");
}
请参阅。您的正则表达式最大值应为
^[^@]+@[^@]+$
。要稍微缩短正则表达式,您可以使用\w
(用Java编写为\\w
)而不是[\u a-Za-z0-9]
。电子邮件地址也可以以.
,
开头吗?根据这个答案,它可以以许多特殊字符开头:@Anirudh谢谢你的链接,我的应用程序不会向任何人发送验证电子邮件,因此我没有其他方法验证电子邮件在rubular和regexplanet上进行测试后,我发现它只能识别域名以下的电子邮件。我也可以使用[.]而不是[\.]。还有一件事,我想从同一个字符串中提取多封电子邮件,但我无法隐式信任我的来源。我在myname@myemail.comyourname@youremail.com是字符串的一部分。在这种情况下我该怎么办?请查看案例14。发生这种情况的可能性不是很小。我可以修改我在中使用的表达式吗为了匹配案例14,因为我的字符串非常大而且非常不规则。我希望我只是像你一样匹配电子邮件。另外,我知道gov.in是有效的,所以[\.][a-z]{2,3}[\.][a-z]{2}是有效的。对于案例14,你需要在电子邮件地址之间使用某种分隔符,否则几乎不可能正确匹配字符串。我提供的正则表达式应该能够验证gov.in