2015-11-17 62 views
1

我想檢查一個電子郵件地址是否符合模式:Oracle SQL Reg Exp檢查電子郵件

- 只包括字母,數字和'。'或'_'符號。

- 最後一部分(例如:.com)必須包含2到4個字母。

這是我的註冊截止日期:'[a-zA-Z0-9._][email protected][a-zA-Z0-9._]+.[a-zA-Z]{2,4}'

的問題是,它接受類似%符號,.commmm被接受作爲最後一部分。我怎麼能解決它?

回答

1

的主要問題實際上是兩個位置:

  • 您正在使用的轉義.字符類可以匹配任何符號(但換行符)
  • 之外你沒有使用錨^$,這樣的話你可以匹配更大的字符串中的子字符串。

使用

'^[a-zA-Z0-9._][email protected][a-zA-Z0-9._]+[.][a-zA-Z]{2,4}$' 
^        ^^^   ^

當您將.成一對括號,你匹配一個時期。

+0

很高興爲你效勞。如果我的答案對您有幫助,請考慮也是upvoting(請參閱[如何在堆棧溢出?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)) 。 –

0

我想你只需要^$指定字符串的開頭和結尾:

'^[a-zA-Z0-9.][email protected][a-zA-Z0-9.]+.[a-zA-Z]{2,4}$' 

您可能要稍微調整規則,電子郵件和域名不能以句點開頭:

'^\w[a-zA-Z0-9.]*@\w[a-zA-Z0-9.]*.[a-zA-Z]{2,4}$'