簡體   English   中英

使用java regex進行Emailid驗證

[英]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} * [0-9]) - 從字符串的開頭開始,在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM