php正则与email
1.验证email:
1
.
<
?
php
2 . if ( ereg (“ /^ [a - z]([a - z0 - 9 ] * [ - _/.] ? [a - z0 - 9 ] + ) * @([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) + [/ . ][a - z]{ 2 , 3 }([/ . ][a - z]{ 2 }) ? $ / i; ” , $email )){
3 . echo “Your email address is correct ! ”;}
4 . else {
5 . echo “Please try again ! ”;
6 . }
7 . ?>
2 . if ( ereg (“ /^ [a - z]([a - z0 - 9 ] * [ - _/.] ? [a - z0 - 9 ] + ) * @([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) + [/ . ][a - z]{ 2 , 3 }([/ . ][a - z]{ 2 }) ? $ / i; ” , $email )){
3 . echo “Your email address is correct ! ”;}
4 . else {
5 . echo “Please try again ! ”;
6 . }
7 . ?>
国际域名格式如下
:
域名由各国文字的特定字符集、英文字母、数字及“ - ”(即连字符或减号)任意组合而成 , 但开头及结尾均不能含有“ - ”,“ - ”不能连续出现 。 域名中字母不分大小写。域名最长可达60个字节(包括后缀 . com、 . net、 . org等)。
/^ [a - z]([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) * @([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) + [/ . ][a - z]{ 2 , 3 }([/ . ][a - z]{ 2 }) ? $ / i;
/ 内容 / i 构成一个不区分大小写的正则表达式;
^ 匹配开始
$ 匹配结束
[a - z] E - Mail前缀必需是一个英文字母开头
([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) * 和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是空字符,也是匹配的, * 表示0个或者多个。
* 表示0个或多个前面的字符 .
[a - z0 - 9 ] * 匹配0个或多个英文字母或者数字
[ - _] ? 匹配0个或1“ - ”,因为“ - ”不能连续出现
[a - z0 - 9 ] + 匹配1个或多个英文字母或者数字,因为“ - ”不能做为结尾
@ 必需有个有@
([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) + 见上面([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) * 解释,但是不能为空, + 表示一个或者为多个。
[/ . ] 将特殊字符( . )当成普通字符
[a - z]{ 2 , 3 } 匹配2个至3个英文字母,一般为com或者net等 .
([/ . ][a - z]{ 2 }) ? 匹配0个或者1个[/ . ][a - z]{ 2 }(比如 . cn等) 我不知道一般 . com . cn最后部份是不是都是两位的 , 如果不是请修改{ 2 }为{起始字数 , 结束字数}
完美E - Mail正则表达式,附详细讲解,请大家帮忙测试一下!
2.抽取字符串中的email:
域名由各国文字的特定字符集、英文字母、数字及“ - ”(即连字符或减号)任意组合而成 , 但开头及结尾均不能含有“ - ”,“ - ”不能连续出现 。 域名中字母不分大小写。域名最长可达60个字节(包括后缀 . com、 . net、 . org等)。
/^ [a - z]([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) * @([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) + [/ . ][a - z]{ 2 , 3 }([/ . ][a - z]{ 2 }) ? $ / i;
/ 内容 / i 构成一个不区分大小写的正则表达式;
^ 匹配开始
$ 匹配结束
[a - z] E - Mail前缀必需是一个英文字母开头
([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) * 和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是空字符,也是匹配的, * 表示0个或者多个。
* 表示0个或多个前面的字符 .
[a - z0 - 9 ] * 匹配0个或多个英文字母或者数字
[ - _] ? 匹配0个或1“ - ”,因为“ - ”不能连续出现
[a - z0 - 9 ] + 匹配1个或多个英文字母或者数字,因为“ - ”不能做为结尾
@ 必需有个有@
([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) + 见上面([a - z0 - 9 ] * [ - _] ? [a - z0 - 9 ] + ) * 解释,但是不能为空, + 表示一个或者为多个。
[/ . ] 将特殊字符( . )当成普通字符
[a - z]{ 2 , 3 } 匹配2个至3个英文字母,一般为com或者net等 .
([/ . ][a - z]{ 2 }) ? 匹配0个或者1个[/ . ][a - z]{ 2 }(比如 . cn等) 我不知道一般 . com . cn最后部份是不是都是两位的 , 如果不是请修改{ 2 }为{起始字数 , 结束字数}
完美E - Mail正则表达式,附详细讲解,请大家帮忙测试一下!
<?
php
function getEmail( $str ) {
$pattern = " /[a-z0-9]([a-z0-9]*[-_/.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?/i " ;//为了适合qq的数字邮箱,正则开头作了修改
preg_match_all ( $pattern , $str , $emailArr );
return $emailArr [ 0 ];
}
$emailstr = " 9999@qq.com.cn俺不是米vi地方就开iid邮件列表:fuyongjie@163.com 和hh@qq.com;.;;,fuyongjie.100@yahoo.com,fu-1999@sina.com " ;
$emailArr = getEmail( $emailstr );
echo " <pre> " ;
print_r ( $emailArr );
echo " </pre> " ;
?>
function getEmail( $str ) {
$pattern = " /[a-z0-9]([a-z0-9]*[-_/.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?/i " ;//为了适合qq的数字邮箱,正则开头作了修改
preg_match_all ( $pattern , $str , $emailArr );
return $emailArr [ 0 ];
}
$emailstr = " 9999@qq.com.cn俺不是米vi地方就开iid邮件列表:fuyongjie@163.com 和hh@qq.com;.;;,fuyongjie.100@yahoo.com,fu-1999@sina.com " ;
$emailArr = getEmail( $emailstr );
echo " <pre> " ;
print_r ( $emailArr );
echo " </pre> " ;
?>
打印如下:
Array
(
[ 0 ] => 9999 @qq . com . cn
[ 1 ] => fuyongjie@ 163 . com
[ 2 ] => hh@qq . com
[ 3 ] => fuyongjie . 100 @yahoo . com
[ 4 ] => fu - 1999 @sina . com
)
Array
(
[ 0 ] => 9999 @qq . com . cn
[ 1 ] => fuyongjie@ 163 . com
[ 2 ] => hh@qq . com
[ 3 ] => fuyongjie . 100 @yahoo . com
[ 4 ] => fu - 1999 @sina . com
)
3.比较:第2里的正则里没有了第1的^和$;