2014-10-20 3 views
1

Я написал Regex в Java для:Правильно ли мой regEx?

  1. Выражение должно начинаться с letter.
  2. Вслед за letter или number или period или @
  3. Заканчивается abc.com или xyz.com

Regex я пытался:

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

Я думаю, что есть какая-то проблема в 3-м состоянии. Может кто-нибудь, пожалуйста, поправьте меня или предоставите мне лучший регекс. Заранее спасибо.

+0

'[A-Za-z0-9 @ \.] *?' Эта часть выглядит подозрительно. Вы пытаетесь сопоставить адрес электронной почты? – nhahtdh

+0

Вы пытаетесь проверить адрес электронной почты? Не. Посмотрите здесь, для регулярного выражения, которое ловит большинство действительных адресов: http://stackoverflow.com/a/719543/1436981 – stuXnet

ответ

4

Вам не нужно бежать точку внутри класса символов, а также положить abc и xyz внутри захвата или не захватив группу с | (Логическое ИЛИ оператор) в качестве разделителя.

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

Java регулярное выражение будет,

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

[abcxyz] в своем регулярном выражении соответствует одному символу из заданного списка. То есть, это будет соответствовать a или b или c или x или y или z

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

Попробуйте это. [abcxyz] будет соответствовать только один символ, как a, b и т.д.

+0

+1 для того, чтобы быть самым быстрым :) – anubhava

+0

@TheLostMind только что использовал регулярное выражение OP.Will исправьте его thanx. – vks

+0

@anubhava угадайте, что вы не должны были удалять свой ответ ... u пропустил некоторые точки коричневого цвета: P – vks

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

Спасибо, что добавил \, не видел тег java, поэтому я использовал простое регулярное выражение обозначение :) Большое спасибо :) – Beri

1

Может быть я ошибаюсь, но я предполагаю, что вы хотите, чтобы соответствовать адрес электронной почты, так что лучше поставить @ за пределами символьный класс, чтобы убедиться, есть только один:

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

Но регулярное выражение, которое соответствует адрес электронной почты является гораздо более сложным, см this

Смежные вопросы