2013-03-11 2 views
0

нужно регулярное выражение, которое будет детектировать [email protected]Regex для определения периода до @ адрес электронной почты

но не обнаружить на ([a-z0-9A-Z])@domain.tld

уважительной: [email protected]

недействителен: [email protected]

Узнаю период является юридический предел @ по электронной почте, но необходимо определить это условие.

+0

как насчет [a-z0-9A-Z] + \. [A-z0-9A-Z] + @ domain.tld – user1937198

+4

тест * недействительный * адрес электронной почты по вашему запросу: '\ .. * @' –

+0

Is Что-нибудь еще мы можем сделать для вас? [Что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Herbert

ответ

0

\.(?=.*@) Должен сделать трюк.

+0

Мне любопытно, зачем вы здесь смотрите. – jrajav

+0

Я использовал внешний вид, чтобы захватить только «.». экземпляры, предшествующие «@», но без фактического включения «@» в моем совпадении – Daedalus

+0

Это регулярное выражение используется только для определения истинного/ложного совпадения, из того, что я понимаю, поэтому нет необходимости исключать '@' – jrajav

2

Предполагая, что вы уже подтверждено это как соответствующий адрес электронной почты:

\..*@

Что означает: ., то последовательность из 0 или более символов, то @

+0

там вы идете :) не прокручивали столько, сколько ответ @sputnik * немного длинный * –

1

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

// assuming there's already an `@` in $email 
if (($p = strpos($email, '.')) !== false && $p < strpos($email, '@')) { 
    echo 'invalid'; 
} 

Если в адресе нет @, он не будет печатать 'invalid', потому что любое целое число не будет строго меньше false.

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