用perl怎么匹配一个字符串是否是合法的email地址

用perl怎么匹配一个字符串是否是合法的email地址

RT, 哪位大侠最好给个好用的, 我要在C语言里调用, 或者C的也可以, 最近很菜, 先多谢了
/\w+@[\w.]+/


QUOTE:
原帖由 ly5066113 于 2008-9-10 12:17 发表
/\w+@[\w.]+/

正则
应该使用非贪婪
这个为什么不行? 要怎么改呢?

#!/usr/bin/perl
$_ = "bb@b.com";
if (/^[0-9A-Za-z]([a-zA-Z0-9._+-])+@([a-zA-Z0-9_-])+\.([a-zA-Z0-9._-])+[0-9A-Za-z]$ /) {
    printf("ok\n");
}


QUOTE:
原帖由 forlorngenius 于 2008-9-10 13:22 发表
应该使用非贪婪

理由?
不要滥用正则表达式。


QUOTE:
原帖由 flw 于 2008-9-10 14:16 发表
不要滥用正则表达式。

flw他最常说的一句!
如果一行中好几个email地址


QUOTE:
原帖由 chjcpu1 于 2008-9-10 13:26 发表
这个为什么不行? 要怎么改呢?

#!/usr/bin/perl
$_ = "bb@b.com";
if (/^[0-9A-Za-z]([a-zA-Z0-9._+-])+@([a-zA-Z0-9_-])+\.([a-zA-Z0-9._-])+[0-9A-Za-z]$ /) {
    printf("ok\n");
}

这个写的很强了。。。