непонятная работа регулярныйх выражений \w работает не совсем так как предполагается

непонятная работа регулярныйх выражений \w работает не совсем так как предполагается

PHP:
$email[] = '[email protected]';
$email[] = '[email protected]';
$email[] = '[email protected]';

foreach ($email as $v)
{
        echo $v." => ";
        echo (preg_match("/([\w]{1,}[@]{1}[\w]{1,}[\.]{1}[\w]{2,})/",$v))?'верен'."\n":'неверен'."\n";
}
результаты

[email protected] => верен
[email protected] => верен
[email protected] => неверен

непойму....
 

Demiurg

Guest
что не понятно ? добавь третим параметром preg_match $matches и смотри, что с чем совпадает.

И упрости выражение до
/(\w+@\w+\.\w\w+)/
 
Demiurg спасибо тебе огромное.
....
хотя

вот что меня волнует

$email[] = 'my-mail@mymail.com'; // my-mail == \w
$email[] = 'mymail@my-mail.com'; // my-mail != \w

.... вот в чем проблемма

PHP:
preg_match("/(\w+@\w+\.\w\w+)/",'[email protected]',$m);
print_r($m);
/* output
Array
(
    [0] => [email][email protected][/email]
    [1] => [email][email protected][/email]
)
*/
 

Sluggard

Новичок
Скорее всего:
$email[] = 'my-mail@mymail.com'; // mail == \w
$email[] = 'mymail@my-mail.com'; // my-mail != \w
 
Сверху