2014-10-20 135 views
1

我已經用Java編寫的正則表達式爲:我的regEx是否正確?

  1. 表達應該以letter開始。
  2. 其次letternumberperiod@
  3. 結束與abc.comxyz.com

正則表達式我想:

^[A-Za-z][[email protected]\.]*?[abcxyz]\.com$ 

我認爲這是在第3個條件的一些問題。有人可以糾正我或爲我提供更好的regEx。提前致謝。

+0

'[A-Za-z0-9 @ \] *?'這部分看起來很腥。你想匹配一個電子郵件地址嗎? – nhahtdh 2014-10-20 07:12:24

+0

你想驗證電子郵件地址嗎?別。看看這裏的正則表達式捕獲大多數有效的地址:http://stackoverflow.com/a/719543/1436981 – stuXnet 2014-10-20 07:38:18

回答

4

你不需要逃脫字符類中的點,也把abcxyz捕獲或無捕獲組內部進行|邏輯或運營商)作爲分離器。

^[A-Za-z][[email protected]]*?(?:abc|xyz)\.com$ 

Java的正則表達式將是

^[A-Za-z][[email protected]]*?(?:abc|xyz)\\.com$ 

[abcxyz]在您的正則表達式匹配從給定的列表中的一個字符。也就是說,它會匹配abcxyz

3
^[A-Za-z][[email protected]]*?(?:\babc\b|\bxyz\b)\\.com$ 

試試這個。 [abcxyz]將只匹配1個字符像ab

+0

+1是最快的:) – anubhava 2014-10-20 06:48:22

+0

@TheLostMind只是使用OP的正則表達式。將它改正thanx。 – vks 2014-10-20 06:50:44

+0

@anubhava猜你不應該刪除你的答案...你錯過了一些布朗尼點:P – vks 2014-10-20 06:51:46

0
^[A-Za-z][[email protected]]*?(abc|xyz)\\.com$ 
+0

謝謝你添加\,沒有看到java標記,所以我用簡單的正則表達式符號:)非常感謝:) – Beri 2014-10-20 06:52:53

1

可能是我錯了,但我猜你想匹配的電子郵件地址,所以最好把外面的@字符類,以確保只有一個:

^[A-Za-z][A-Za-z0-9.]*@[A-Za-z0-9.]*(abc|xyz)\\.com$ 

但是相匹配的電子郵件地址是一個正則表達式複雜得多,見this