[英]Emailid validation using java regex
誰能幫助我找到使用“java regex”解決這個問題的方法。
問題:EmailId應采用以下格式<<第1部分>>。<<第2部分>> @ <<第3部分>> <<第4部分>>
第一部分應包含字母數字字符,並且必須包含至少1個大寫字母,1個小寫字母和1個數字。
第二部分應包含字母數字字符。
第3部分應該是長度為3到8的字母值。
第四部分可以是“.com”或“.co.in”
我的解決方案是:
if(EmailId.matches(""^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{3,}\\.[\\w&&[^_]]+@[\\w&&[^_]]{3,8}\\.(com|co\\.in)")){
return true;
}
但是這個解決方案是接受“RAKESH1.Roshan@infy.co.in”這個電子郵件ID,這是不可接受的。
我不知道我哪里出錯了。
請幫忙!!!!!!!!
問題是你的前瞻不僅限於第一部分。
例如,使用輸入RAKESH1.Roshan@infy.co.in
,前瞻(?=.*[az])
將跳過RAKESH1.R
並找到以下小寫字母o
。
您可以通過在所有前瞻中將.*
更改為[^.]*
來解決此問題。
另一個問題是.{3,}
。 這將匹配任何字符,而不僅僅是字母數字字符。 將其更改為[\\\\w&&[^_]]{3,}
(或僅[\\\\w&&[^_]]+
)。
你的正則表達式不起作用因為.
在你的模式中使用。 如果你不允許所有的字符,你應該只堅持你允許的特定類別的字符。
我建議:
.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}+
- 一個或多個字母數字字符 @
- 文字@
char \\\\p{Alpha}{3,8}
- 3到8個或更多字母字符 [.]co(m|[.]in)
- .com
或.co.in
在字符串的末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.