注册 登录
编程论坛 PHP技术论坛

正则表达式

czg123698741 发布于 2009-07-20 19:39, 913 次点击
高手们,请教一下:
代码如下:
<?php
    $email = $_POST['email'];
    if(trim($email) != ''){
        $pattern = '/^[a-zA-Z][a-zA-z0-9-]*[@]([a-zA-Z0-9]*[.]){1,3}[a-zA-Z]*/';
        if(preg_match($pattern,$email) == 1){
            echo '输入格式正确: '.$email;
        }else{
            echo '输入格式错误!!';
        }
    }
?>

疑问:这段代码中,'/^[a-zA-Z][a-zA-z0-9-]*[@]([a-zA-Z0-9]*[.]){1,3}[a-zA-Z]*/',
为何][a-zA-z0-9-],9后还多了一个【连字符】啊??还有式子里面的{1,3}是什么意思啊???
我似乎觉得这个^[a-zA-Z][a-zA-z0-9-],好像重复啦!a到z和A到Z不是应经有了吗???
谢谢解忧~~~~~
5 回复
#2
外部三电铃2009-07-21 04:41
[a-zA-z0-9-],9后面的连字符是跟前面的0-9并列的,意思是,可以是大小写字母数字还有连字符,估计楼主抄错了,应该是下划线,电子邮件用户名一般禁止连字符的。

式子里面的{1,3}表示匹配前面的内容1到3次。举个例子就是xxx.和xxx.yy.和xxx.yy.zz.都可以,加上后面的[a-zA-Z]*匹配纯字母。意思就是可以匹配

这个^[a-zA-Z][a-zA-z0-9-]没有重复啦,前面的[a-zA-Z]表示大小写纯字母,意思是只有字母开头的才可以,后面跟着的[a-zA-z0-9-]表示首字母后面跟着的可以是字母、数字、连接符
#3
czg1236987412009-07-21 11:11
回复 2楼 外部三电铃
你好!
我没有写错啊!
我是直接复制粘贴的!
#4
czg1236987412009-07-21 11:18
回复 2楼 外部三电铃
电子邮件用户名的确禁止连字符的,但是我也猜[a-zA-z0-9-],9后面的【连字符】“-”是写多的,但是无论有或否都影响不大!【连字符】应该是从什么到什么的意思啊!
如果是一横的话何不在其中添加’-‘这样写呢??!!!
#5
nuciewth2009-07-22 20:55
疑问:这段代码中,'/^[a-zA-Z][a-zA-z0-9-]*[@]([a-zA-Z0-9]*[.]){1,3}[a-zA-Z]*/',
为何][a-zA-z0-9-],9后还多了一个【连字符】啊??还有式子里面的{1,3}是什么意思啊???
//应该是下划线,标准的邮箱是不会出现连接符的。{1,3}表示前一项最少匹配一次,最多3次,比如说bbs.bccn.就是两次
我似乎觉得这个^[a-zA-Z][a-zA-z0-9-],好像重复啦!a到z和A到Z不是应经有了吗???
//邮箱名一定要用字母开头,而且除掉第一个字符外,后面的字符可以字母数字交叉出现。所以一定要a-zA-z0-9作为一组出现。
#6
pengjun11282009-08-19 08:55
正则表达式真让人头疼。大家怎么学的?
不解。。
1