2014-10-20 98 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