+ -
当前位置:首页 → 问答吧 → 正则表达式基础-元字符

正则表达式基础-元字符

时间:2009-12-15

来源:互联网

在上一节(正则表达式基础),我们通过基本的了解见识到一个比较长的正则表达,下面就通过这个正则来学习最基本的正则表达的语法。下面来解析邮件地址的第一部分:^[_\.0-9a-z-]+,它包括几个知识点:元字符,类别等
在上一节中我们知道(用户名:可能以字母或者数字开始),这个就对应(^[_\.0-9a-z-]+),这一部分又可以拆分为三部分:
首先是“^”,这个符合在正则表示以什么开始。这是正则中的元字符之一。
再一个:“[]”,这个中括号表示类别,相当于一个集合。正则中有几个常见的类别。
还有一个:“-”中括号中的这个连字符表示一个范围。”a-z”就表示,所有的小写字母。同样”0-9” 就表示所有的数字。你可能还看到这里有个下划线“_”,这没有什么特别的意义,就是说用户名中可以包含下划线。
再一个:”\.”表示什么呢?因为”.”在正则中有特别的意义(匹配除换行符外的所有单个的字符),所以为了在邮件地址中也能匹配到包含”.”的用户名,就需要对”.”进行转义处理(“\.”)。
最后一个:”+”,这个”+”也是属于元字符之一,它表示前面的字符出现1次或n次。一般来说元字符用于类别([])的前面或者后者用来修饰一个类别(集合)。
补充说明:当”^”元字符在[]类别中是表示除…之外,如’[^a-z]’表示除小写字母外。当我们在读正则表达式的时候,先读元字符所表达的意义。如以…开头或者以…结尾之类。
下面来解析邮件地址的第二部分:@([0-9a-z][0-9a-z-]+\.)
第一:”@”符号必不可少,它跟在用户名后面。
第二:”()”这在正则中表示一个子表达式,默认对其进行编号,索引为1开始。如果要引用这个子表达式,就这可以这样表示:\\1。如果要引用整个正则,可以用:\\0表示
第三:子表达式的两个类别似乎不要讲了,跟前面的一样的表示范围。
补充说明:当”+”没有在[]之后出现,它只表示顺序上的出现位置,即后面跟什么东西:@([0-9a-z][0-9a-z-]+\.)+,我把它理解为一个加号,不知道对不对?
下面来解析邮件地址的第三部分:[a-z]{2,4}$
第一:用一个类别来表示一个范围:所有的小写字母
第二:{2,4},这个表示出现的字符个数,它有三种情况:{n}、{n,}、{n,m}。以下分别说明:
{n}:这里的n是一个正整数,匹配前面的n个字符
{n,}:这里的n是一个正整数,匹配至少n个前面的字符
{n,m}:这里的n和m都是正整数,匹配至少n个最多m个前面的字符
邮件地址的域名格式如下:
=700) window.open('http://www.helpphp.cn/wp-content/uploads/2009/12/domain_format.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" > domain_format (来自万网的域名注册页面)  
可以看出,域名后缀至少有2个,最多4个
第三:$ 这个也是元字符之一,表示以什么结尾,一般用在类别的后面来修饰范围
其它元字符的意义
大括号:大括号用来精确指定匹配元字符出现的次数
加号:”+”字符用来匹配元字符前的字符出现一次或者多次
星号:”*”字符用来匹配元字符前的字符出现零次或者多次
问号:”?”字符用来匹配元字符前的字符出现零次或者1次
到此一个完整的用于邮件地址验证的正则表达式就完成了。

不知道这样的教程有没有误导新手,还请高手们指正呀...

作者: httpcn   发布时间: 2009-12-15

怎么没人发表下意见呢

作者: httpcn   发布时间: 2009-12-16

还不错,继续补充

作者: haowubai   发布时间: 2009-12-16

《php视频教程》每周一期,我喜欢,我支持!

作者: wds2008   发布时间: 2009-12-29

热门下载

更多