任何人都可以帮助我找到使用“java regex”解决此问题的方法。
问题:EmailId 应采用以下格式 <<1st part>>.<<2nd part>>@<<3rd part>><<4th part>>
第一部分应包含字母数字字符,并且必须至少包含 1 个大写字母、1 个小写字母和 1 个数字。
第二部分应包含字母数字字符。
第三部分应该是长度为 3 到 8 的字母值。
第四部分可以是“.com”或“.co.in”
我的解决办法是:
if(EmailId.matches(""^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{3,}\\.[\\w&&[^_]]+@[\\w&&[^_]]{3,8}\\.(com|co\\.in)")){
return true;
}
但是这个解决方案接受“[email protected]”这个电子邮件ID,这是不可接受的。
我不知道我哪里出错了。
请帮忙!!!!!!!!
由于.
在您的模式中使用,您的正则表达式不起作用。如果您不允许使用所有字符,则应该只使用您允许的特定类型的字符。
我建议:
.matches("(?=\\p{Alnum}*\\p{Upper})(?=\\p{Alnum}*[0-9])(?=\\p{Alnum}*\\p{Lower})\\p{Alnum}*[.]\\p{Alnum}+@\\p{Alpha}{3,8}[.]co(m|[.]in)"))
请参阅Java 演示。由于该模式与 一起使用.matches()
,因此^
在开始和$
结束时都不需要锚点。
详情:
(?=\\p{Alnum}*\\p{Upper})
- 从字符串的开头开始,0+ 字母数字字符后必须有一个大写字母(?=\\p{Alnum}*\\p{Lower})
- 从字符串的开头开始,0+ 字母数字字符后必须有一个小写字母\\p{Alnum}*
- 0或多个字母数字字符(替换*
用+
,如果你需要至少需要1)[.]
- 文字.
字符\\p{Alnum}+
- 1 个或多个字母数字字符@
- 文字@
字符\\p{Alpha}{3,8}
- 3 到 8 个或更多字母字符[.]co(m|[.]in)
-.com
或.co.in
在字符串的末尾。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句